Advertencia: Probablemente lo que sea que estas tratando de hacer lo estas haciendo mal Pregunta: ¿Como usar variables globales? Respuesta:
Antes de usar cualquier variable, ya sea global o no, hay una sola condición que debe de cumplir y esto es haberle asignado un valor previamente.
Accediendo a variables globales
Ejemplo:
Código Python:
Ver original# Esto va a fallar miserablemente
print x
Código Python:
Ver original# Esto va a imprimir 10
x = 10
print x
Las variables globales no son una excepción.
Código Python:
Ver original# Esto va a fallar en grande
# Por que la funcion f es llamada
# antes que x sea asignado
def f():
print x
f()
x = 10
Código Python:
Ver original# Sorprendentemente esto va a funcionar
# Por que x es asignado
# antes de llamar a la funcion f
def f():
print x
x = 10
f()
La clave en variables globales es entender como funciona el alcance de las variables.
Por ejemplo python siempre trata de buscar primero en las variables locales, si existe usa esa referencia. Si no sube de nivel y trata de reconocer la variable hasta llegar a el alcance de nivel modulo.
Asignando valores a las variables globales
Modificar el valor de una variable global es un proceso un poco menos intuitivo
Código Python:
Ver originalx = 10 # Mi variable global. Alcance: Modulo
def f():
# Aqui NO estas asignando un valor a tu variable global
# Aqui estas creando una variable local
x = 20
print "variable local", x
f()
print "variable global", x
Entonces para modificar el valor de una variable global, debes de hacer 2 cosas, la primera es decirle de manera explicita a python que queremos referenciar a x como una variable global.
Código Python:
Ver originalx = 10 # Mi variable global. Alcance: Modulo
def f():
# Aqui definimos explicitamente que x es nuestra variable global
global x
# Aqui asignamos un nuevo valor a x (global)
x = 20
print "variable global", x
f()
print "variable global", x