[Python] variabili globali all'interno di funzioni

Francesco Guerrieri f.guerrieri a gmail.com
Gio 21 Feb 2008 14:56:23 CET


On Thu, Feb 21, 2008 at 2:33 PM, Marco A. <linediconsine a gmail.com> wrote:
> Scusate, mi  partita la mail prima che la finissi
>
> Il problema  che le veriabili globali dentro funzione, non sono globali
> anche per il resto del programma... (cosi mi risulta al momento)
>
> Cosa serve quindi dichiarare variabili globali all'interno di funzioni ?
>
> Grazie e di nuovo scusate la doppia mail..
>
> Marco
>

la keyword global all'interno di una funzione significa che il nome
utilizzato non deve essere locale al namespace della funzione ma
deve riferirsi al namespace esterno.
Questo serve solo nei casi in cui assegni a quel nome. Esempio

a = "ciao"
def f():
    a = "prova"
print a

siccome non hai messo global a nel corpo della funzione, il nome a 
stato creato nel namespace di f ed associato alla stringa "prova" e
non  stato toccato il nome a associato alla stringa "ciao", e quindi
stamperai "ciao"

se invece avessi scritto
a = "ciao"
def f():
    global a
    a = "prova"
print a

avresti cambiato l'oggetto a cui puntava anche il nome esterno, e
stamperai "prova"

Usa locals() e globals() per toglierti ogni dubbio :-)

ciao,
Francesco


More information about the Python mailing list