Matices del trabajo con ámbitos en Python
Consideremos los matices importantes del trabajo con variables locales y globales.
Supongamos que tenemos una variable global num.
Creemos una función func
que muestre la variable global num
en la consola:
num = 1
def func():
print(num)
func() # mostrará 1
Y ahora declaremos una variable local num en
la línea siguiente a la función print. Después
de ejecutar el código, se mostrará un error en la consola.
Esto ocurre porque Python
dentro de la función percibe num
solo como una variable local que
aún no ha sido declarada:
num = 1
def func():
print(num) # mostrará error
num = 2
Reescribamos ahora el código dentro de la función
para que el valor de la variable num
aumente en 2:
num = 1
def func():
num += 2 # mostrará error
El error se debe a que la expresión num += 2
representa la siguiente escritura:
num = num + 2
Sin embargo, la propia variable local, a la que se le suma, aún no está declarada. Y, en consecuencia, Python muestra un error, ya que no se puede sumar un número a un valor inexistente.
¿Cuál será el resultado de la ejecución del siguiente código:
tst = '12'
def func():
tst = 12
return tst
print(tst)
¿Cuál será el resultado de la ejecución del siguiente código:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
¿Cuál será el resultado de la ejecución del siguiente código:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)