PDA

View Full Version : [PYTHON] Visibilità variabili


HoldenCaulfield1987
14-01-2013, 15:27
Ciao,
sto (anche se lentamente) continuando la mia scoperta di Python.
Venendo da C/Java la tipizzazione dinamica ancora mi fa venire qualche dubbio, ma vorrei chiedervi un aiuto sulla "vita" delle variabili.
Ad esempio:

>>> i = 0
>>> while i < 5:
x = "python"
i += 1
>>> print(x)
python


Mi sarei aspettato che una variabile dichiarata dentro ad un while non fosse più visibile al termine del ciclo, invece è ancora perfettamente utilizzabile.
Come mai?

Grazie

kwb
16-01-2013, 15:42
Beh ma il codice che hai scritto è come se fosse parte di un'unica funzione.
Ora, la console non l'ho mai usata di Python, ho sempre creato script/funzioni/metodi/classi, quindi non so se funziona in maniera differente, però secondo me è così, è come se fossi ancora dentro il main. È quindi logico che la variabile non sia sparita :)

cdimauro
21-01-2013, 09:09
Ciao,
sto (anche se lentamente) continuando la mia scoperta di Python.
Venendo da C/Java la tipizzazione dinamica ancora mi fa venire qualche dubbio, ma vorrei chiedervi un aiuto sulla "vita" delle variabili.
Ad esempio:

>>> i = 0
>>> while i < 5:
x = "python"
i += 1
>>> print(x)
python


Mi sarei aspettato che una variabile dichiarata dentro ad un while non fosse più visibile al termine del ciclo, invece è ancora perfettamente utilizzabile.
Come mai?

Grazie
Perché lo scope della variabile è locale all'intera funzione (e alle eventuali funzioni annidate che, quindi, possono "vedere" le variabili usate nella funzione più esterna).

Il concetto è che in Python una variabile non viene dichiarata. Quello che stai facendo è utilizzare un'etichetta nella funzione a cui attribuisci un valore. L'etichetta rimarrà in vita fino alla chiusura dello scope della funzione, e quindi la potrai utilizzare anche fuori dal blocco in cui è definita.