Tengo una variable global que estoy usando como variable predeterminada. Dependiendo de lo que ocurra en mi programa, necesito la capacidad de cambiar esos valores predeterminados y que los cambios persistan a través de la operación restante de mi código. Los quiero cambiados y definidos en todas partes, por lo tanto, utilicé una variable global. Aquí hay un código de prueba que muestra cómo estoy tratando de modificar estas variables.Confusión de variables globales en python
Cuando hago esto tengo el siguiente problema ...
- El programa piensa que
myGlobal
no se ha definido en la principal. Pero tiene. ¿Por qué? - Cuando llamo a una subrutina después de haber cambiado
myGlobal
. No quería que eso sucediera.
¿Cuál es la forma correcta de lograr lo que estoy tratando de hacer aquí? ¿Ejemplos?
#!/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:])