[Python-es] namespaces y variables globales

Chema Cortes pych3m4 en gmail.com
Jue Nov 4 20:18:44 CET 2010


El día 4 de noviembre de 2010 20:04, jordi torrents
<jtorrents en milnou.net> escribió:

> Es verdad que la utilización directa de "globals()" es bastante
> críptica pero creo que lo que propones no funcionaría en mi caso.

El uso de globals() de esta manera tiene sentido cuando no conoces de
antemano el nombre de la variable global. En tu caso creo que no es
así, por lo que igual te daría haber puesto:

a = 1 is not options.number else options.number

Las funciones deberían declarar esta variable como "global", aunque
está implícito si no modificas su valor.


Tal como propones, una solución sería crear la instancia en programa
principal e importarla desde las funciones. Para ello puedes
aprovechar que el módulo principal siempre se llama __main__

from __main__ import job_server


Otra opción sería centralizar las llamadas a las funciones en un único
lugar y aplicar el método set_ncpus sobre cada instancia, pero supongo
que ya lo habrás descartado, pero es una buena forma de tener
documentado cómo has hecho las pruebas por si lo necesitas revisar más
adelante.


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