[pyar] chancheando con globals() [era: local vs global]
Marcos Dione
mdione en grulic.org.ar
Mar Ago 13 15:26:39 ART 2013
On Tue, Aug 13, 2013 at 02:35:57PM -0300, Angel Java Lopez wrote:
> Sin saber mucho de Python, el caso que imagino es que en globals dejes algo
> en un modulo, que otro modulo pueda consumir sin tener que declararlo o sin
> tener que importar el primer modulo explicitamente.
la verdad es que esto está fuera de lo que pregunté inicialmente,
pero es bueno ver los bordes del lenguaje.
> Ejemplo, en un modulo declaro
>
> def foo():
> return 1
>
> Lo pongo como global
>
> globals()['bar'] = foo
>
> En cualquier otro lugar puedo usar ahora
>
> bar()
>
> sin tener que importar ni nada. Parece que funciona como si fuera un
> builtin()
lo probaste? siendo tan fácil de probar esto en python, al menos
vale la pena hacerlo...
> Algun ejemplo de este uso? Funciona como digo?
veamos:
--- 8< moo.py ---
def foo ():
return 1
globals()['bar']= foo
------ >8 -------
--- >8 baz.py ---
import moo
print (bar ())
------ 8< -------
no, no funka:
mdione en diablo:~/src/projects/ayrton/tmp$ python3 baz.py
Traceback (most recent call last):
File "baz.py", line 3, in <module>
print (bar ())
NameError: name 'bar' is not defined
esto es porque globals() sólo devuelve el diccionario global del
módulo actual, cuyo cambio no se vé reflejado en el resto.
--
(Not so) Random fortune:
[12:32] <xanthus> el viaje mas largo que hice fue cuando sali del vientre de mi
madre
More information about the pyar
mailing list