Quello che capisco leggendo la documentazione è che Python ha uno spazio dei nomi separato per le funzioni e se voglio usare una variabile globale in quella funzione, devo usare global
.
Sto usando Python 2.7 e ho provato questo piccolo test
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Sembra che le cose funzionino bene anche senza global
. Sono stato in grado di accedere alla variabile globale senza alcun problema.
Mi sto perdendo qualcosa? Inoltre, ciò che segue è dalla documentazione di Python:
I nomi elencati in un'istruzione globale non devono essere definiti come parametri formali o in una destinazione di controllo del ciclo for, definizione di classe, definizione di funzione o istruzione di importazione.
Sebbene i parametri formali e la definizione della classe abbiano senso per me, non sono in grado di comprendere la limitazione per la definizione del target di controllo del loop e la definizione della funzione.
def foo(): ...
e foo = ...
allo stesso tempo). Crea un nuovo ambito per ogni chiamata di funzione. (Ma in che modo differisce da qualsiasi altra lingua di alto livello in remoto nel mondo?)