2013-03-24 34 views
6

Sto cercando di dichiarare alcune variabili globali in alcune funzioni e di importare il file con quelle funzioni in un altro. Tuttavia, sto trovando che l'esecuzione della funzione nel secondo file non creerà la variabile globale. Ho cercato di creare un'altra variabile con lo stesso nome, ma quando stampo la variabile, esso stampa il valore del secondo file, non il valore globaleAmbito globale variabile Python

globals.py

def default(): 
    global value 
    value = 1 

main.py

from globals import * 
value = 0 
def main(): 
    default() 
    print value 

if __name__=='__main__': 
    main() 

questo stamperà 0. se non ho value = 0 in main, il programma errore (valore non definito).

Se io dichiaro value in globals.py al di fuori della funzione, main.py assumerà il valore del mondiale value, piuttosto che il valore impostato in default()

Qual è il modo corretto per ottenere value essere una variabile globale in pitone?

risposta

5

Globali in Python sono globali solo per il loro modulo. Non ci sono nomi che è possibile modificare e che sono globali per l'intero processo.

si può realizzare ciò che si vuole con questo:

globals.py:

value = 0 
def default(): 
    global value 
    value = 1 

main.py:

import globals 
def main(): 
    globals.default() 
    print globals.value 

if __name__ == "__main__": 
    main() 

Non ho idea se un globale come questo è il il modo migliore per risolvere il tuo problema, però.