[pyar] [Variables Globales]What are the rules for local and global variables in Python?

Facundo Batista facundobatista en gmail.com
Lun Jun 3 21:18:48 ART 2013


2013/6/3 Apokalyptica Painkiller <apokalyptica79 en gmail.com>

> Hola gente, acá va una pregunta (preguntonta) sobre variables.
>
> Leyendo me encontré que hay quienes dicen que no es bueno o no es aconsejable y/o recomendable el uso de variables globales. Si es así, por qué no es aconsejable?
>
> Ahora estoy leyendo el siguiente link:
> What are the rules for local and global variables in python y sinceramente no me queda claro, el tema de la variable globa.
>
> Hice un ejemplo sencillo donde defino una función y dentro de ella hago uso de 2 variables globales, en mi ejemplo si, me queda claro y lo entiendo,

No es que es no hay que usar variables globales. Lo que hay que tratar
de evitar es *modificar* variables globales desde otros lados.

Un típico uso de las variables globales es para las constantes, ejemplos:

MONTHS = ["Ene", "Feb", ...]
TIMEOUT = 120  # segundos

etc.

Vos ves esas variables, en mayúscula, y decís "ok, son constantes, no
se tocan" [0], laburás tranquila

Pero imaginate que tenés variables globales que después tocás desde
otras funciones. Para saber que eso sucede, tendrías que leer toooodas
las funciones del módulo para ver dónde y cómo se tocan esas
variables. Esto, aunque posible, no está bueno en la realidad porque
lo más probable es que te termine sorprendiendo esas modificaciones.

Vos dirás "pero tengo varias funciones separadas que necesitan usar
una variable en común". En general, la respuesta a esto es una clase,
siendo la variable un atributo del objeto, y las funciones métodos del
mismo.

Saludos!

[0] Aunque a veces es útil reemplazarlas por algo distinto en el caso
de unittests... por ejemplo, reemplazando TIMEOUT por .1 para probar
que la función que timeoutea ande y no tener que esperar 120s en el
test.

--
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista



More information about the pyar mailing list