Variabili e Parametri sono locali¶
- Una istruzione di assegnamento in una funzione crea una variabile locale per una variabile a sinistra dell’operatore di assegnamento.
- E’ chiamata locale perchè quella variabile esiste solamente dentro la funzione e non può essere usata fuori dalla funzione.
Per esempio, consideriamo ancora la funzione square
:
- La variabile
y
esiste solamente finché la funzione viene eseguita, che corrisponde al suo tempo di vita. - Quando la funzione termina (ritorna), le variabili locali sono distrutte.
- I parametri formali sono anch’essi locali e agiscono come variabili locali.
- Per esempio, il tempo di vita di
x
comincia quando chiamiamosquare
e il suo tempo di vita finisce quando la funzione completa la sua esecuzione. - D’altro canto, è possibile per una funzione accedere a una variabile globale.
Sebbene la funzione badsquare
faccia il suo dovere, è scritta in modo non opportuno.
- Prima di tutto, Python controlla le variabili locali che sono state definite nella funzione, che è chiamato local scope.
- Se la variabile non è presente, allora Python controlla le variabili globali, che costituiscono il global scope.
- Le istruzioni di assegnamento nella funzione non possono cambiare il valore delle variabili definite esternamente.
L’esempio corrisponde a una cosiddetta shadow (ombra), che significa che la variabile globale non può essere acceduta da Python perché la variabile locale viene trovata prima.
Analogamente accade nel seguente codice.