Ver Mensaje Individual
  #36 (permalink)  
Antiguo 27/01/2013, 19:56
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: FAQ's de Python

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
  1. # Esto va  a fallar miserablemente
  2. print x

Código Python:
Ver original
  1. # Esto va  a imprimir 10
  2. x = 10
  3. print x

Las variables globales no son una excepción.

Código Python:
Ver original
  1. # Esto va a fallar en grande
  2. # Por que la funcion f es llamada
  3. # antes que x sea asignado
  4. def f():
  5.     print x
  6. f()
  7. x = 10


Código Python:
Ver original
  1. # Sorprendentemente esto va a funcionar
  2. # Por que x es asignado
  3. # antes de llamar a la funcion f
  4. def f():
  5.     print x
  6. x = 10
  7. 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 original
  1. x = 10 # Mi variable global. Alcance: Modulo
  2. def f():
  3.     # Aqui NO estas asignando un valor a tu variable global
  4.     # Aqui estas creando una variable local
  5.     x = 20
  6.     print "variable local", x
  7. f()
  8. 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 original
  1. x = 10 # Mi variable global. Alcance: Modulo
  2. def f():
  3.     # Aqui definimos explicitamente que x es nuestra variable global
  4.     global x
  5.     # Aqui asignamos un nuevo valor a x (global)
  6.     x = 20
  7.     print "variable global", x
  8. f()
  9. print "variable global", x