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

Santiago Basulto santiago.basulto en gmail.com
Lun Jun 3 21:16:49 ART 2013


El gran problema de las globals es que pueden ser modificadas globalmente
(doh!). Qué significa esto. Que tal vez vos esperás que tu variable global
CONTADOR tenga el valor 3 pero otra función la modificó (por un bug, un
programador mal dormido, falto de café, etc) y te rompe todo el programa.
Se pierde un poco el "determinismo", es difícil de debuggear y testear.

Es como cuando en concurrencia debes usar con mucho cuidado las estructuras
de datos que pueden ser modificadas por múltiples hilos.

Por último: me parece que hay que hacer una aclaración. Si bien es mala
práctica usar variables globales, a veces son necesarias. Es más,
django.VERSION es una variable global (por citar un ejemplo).



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

> Muchas gracias Andrés :)
>
>
> El 3 de junio de 2013 20:48, Andres Riancho <andres.riancho en gmail.com>escribió:
>
> Apokalyptica,
>>
>>
>> 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?*
>>>
>>
>> Te cuento para que me sirve a mi no usar globals, seguro otros tendrán
>> sus razones. En general, si alguna vez (que ya hace años no uso) se me
>> ocurre usar globals me doy cuenta que mi arquitectura es mala, que debo
>> usar clases, funciones, etc. Usar variables globales lleva a que leer tu
>> codigo sea mas dificil porque no podes ver en una sola funcion cuales son
>> los inputs y outputs de la misma, ya que depende de algo externo que puede
>> ser modificado en un scope distinto al de la funcion.
>>
>> Adicionalmente, esto hace que sea dificil testear (import unittest) las
>> funciones que usan variables globales.
>>
>> Algo similar ocurre con PEP-8 y el limite de 80 caracteres por linea: si
>> lo respetas, tu codigo va a ser más legible. Si tenes lineas con 120
>> caracteres, es que necesitas un refactoring urgente.
>>
>>
>>
>>>
>>> Ahora estoy leyendo el siguiente link:
>>> What are the rules for local and global variables in python<http://docs.python.org/2/faq/programming#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,
>>> --
>>> I live each day
>>> Like it's my last
>>> I live for rock and roll
>>> I never look back
>>>
>>> I'm a rocker
>>> Do as I feel as I say
>>> I'm a rocker
>>> And no one can take that away
>>>
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>>
>> --
>> Andrés Riancho
>> Project Leader at w3af - http://w3af.org/
>> Web Application Attack and Audit Framework
>> Twitter: @w3af
>> GPG: 0x93C344F3
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
>
> --
> I live each day
> Like it's my last
> I live for rock and roll
> I never look back
>
> I'm a rocker
> Do as I feel as I say
> I'm a rocker
> And no one can take that away
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Santiago Basulto.-
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130603/8f73e6de/attachment.html>


More information about the pyar mailing list