[Python-es] namespaces y variables globales

Alvaro Manrique sanreikaj.foros en gmail.com
Jue Nov 4 20:32:25 CET 2010


En un programa que hice para transferencia de data entre servidores
mysql, yo utilizo una misma instancia de la clase que cree para el
manejo de la coneccion, querys, etc, en muchas funciones, esto lo hice
tal cual lo coloque en el ejemplo, cree mi variable al inicio del
modulo y la funcion que va a crear la instancia, que en tu caso es
main(), la declaro como global

  global variable

Con esto logre usar la instancia en todo el programa sin tener que
pasarla de funcion a funcion y consumir mas memoria.



El 04/11/10, Alvaro Manrique <sanreikaj.foros en gmail.com> escribió:
> Apoyo la idea de crear un modulo para las variables globales, de hecho
> para mi concepto es una buena practica de programacion.
>
>
>
> El 04/11/10, Ramiro <rmrsndvl en yahoo.com.ar> escribió:
>>>2010/11/3 Oswaldo Hernández:
>>>>
>>>> Has probado a insertar la variable directamente en el diccionario
>>>> >globals?:
>>>>
>>>> if not options.number:
>>>>    globals()["a"] = 1
>>>> else:
>>>>    globals()["a"] = options.number
>>>
>>>Gracias a todos por vuestros comentarios y sugerencias. Finalmente >he
>>>optado por la solución que propone Oswaldo. No sé si esta solución >es
>>>muy ortodoxa, pero me funciona perfectamente.
>>
>>
>> El problema que le veo es que queda muy escondida, si es una variable
>> global
>> tendría que quedar bien en claro eso  por si otra persona, o vos mismo
>> dentro de un tiempo, lee el programa.
>>
>> Yo lo haría al modo de Alvaro Manrique como te dijo en un mensaje. Y si
>> tendría que usar esa variable en varios módulos distintos (varios
>> archivos
>> .py), crearía un módulo con todas las variables globales y luego para
>> leerlas o asignarles valores me referiría a esas variables con su nombre
>> de
>> módulo y todo.
>>
>> Algo así:
>>
>> archivo -> glob.py
>>
>> --------------------------------------------------------------
>>
>> var1 = 0
>>
>> var2 = 23
>>
>>
>>
>> def ff():
>>
>>     print "dddddddddddddddddd"
>>
>> --------------------------------------------------------------
>>
>> archivo  ->  globales.py
>> -------------------------------------------------------
>> import glob
>>
>> def mm():
>>     print glob.var2
>>     glob.var2 = 999
>>     print glob.var2
>>     glob.ff()
>>
>> mm()
>> --------------------------------------------------------------
>>
>> saludos
>>
>>
>>
>>
>
> --
> Enviado desde mi dispositivo móvil
>

-- 
Enviado desde mi dispositivo móvil


Más información sobre la lista de distribución Python-es