Ho una variabile globale che sto usando come variabile di default. A seconda di cosa succede nel mio programma ho bisogno della possibilità di cambiare quelle impostazioni predefinite e mantenere le modifiche persistenti attraverso l'operazione rimanente del mio codice. Li voglio cambiati e definiti ovunque, quindi ho usato una variabile globale. Ecco un codice di prova che mostra come sto cercando di modificare queste variabili.Confusione di variabili globali in python
Quando faccio questo ho i seguenti problemi ...
- Il programma pensa che
myGlobal
non è stato definito nella principale. Ma ha. Perché? - Quando chiamo una subroutine dopo aver modificato
myGlobal
. Non volevo che succedesse.
Qual è il modo corretto per realizzare ciò che sto cercando di fare qui? Esempi?
#!/usr/bin/python
import sys
myGlobal = "foo"
print "********************"
print "MyGlobal %s" % myGlobal
print "********************"
def main(argv):
#UnboundLocalError: local variable 'myGlobal' referenced before assignment
print '1. Printing the global again: ' + myGlobal
myGlobal = "bar"
print "2. Change the global and print again: " + myGlobal
# now call a subroutine
mySub()
# Checks for output file, if it doesn't exist creates one
def mySub():
# Why isn't the global "bar" not "foo"?
print '3. Printing the global again: ' + myGlobal
myGlobal = "black sheep"
print "4. Change the global and print again: " + myGlobal
if __name__ == "__main__":
main(sys.argv[1:])