Sfumature dell'utilizzo degli ambiti di visibilità in Python
Consideriamo le importanti sfumature dell'utilizzo delle variabili locali e globali.
Supponiamo di avere una variabile globale num.
Creiamo una funzione func
che stamperà num globale
in console:
num = 1
def func():
print(num)
func() # stamperà 1
Ora dichiariamo una num locale
una riga sotto la funzione print. Dopo
l'esecuzione del codice in console verrà stampato un errore.
Ciò accade perché Python
all'interno della funzione percepisce num
solo come una variabile locale, che
non è ancora stata dichiarata:
num = 1
def func():
print(num) # stamperà un errore
num = 2
Ora riscriviamo il codice all'interno della funzione
in modo che il valore della variabile num
aumenti di 2:
num = 1
def func():
num += 2 # stamperà un errore
L'errore è causato dal fatto che l'espressione num += 2
rappresenta la seguente scrittura:
num = num + 2
Tuttavia, la variabile locale stessa, a cui viene aggiunto il valore, non è ancora dichiarata. E di conseguenza Python restituisce un errore, poiché non è possibile aggiungere un numero a un valore inesistente.
Quale sarà il risultato dell'esecuzione del seguente codice:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Quale sarà il risultato dell'esecuzione del seguente codice:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Quale sarà il risultato dell'esecuzione del seguente codice:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)