[pyar] Variable global y web2py

Mariano Reingart reingart en gmail.com
Sab Oct 12 12:06:59 ART 2013


2013/10/12 Angel Java Lopez <ajlopez2000 en gmail.com>

> Hola gente!
>
> Encuentro hoy que pueden definirse variables que se pueden acceder desde
> un modulo, sin hacer ningun import.
>
>
No es exactamente así. Las "variables" definidas en los *modelos* se pueden
acceder luego en el controlador.
El resto de los módulos sigue el esquema "tradicional" de python, por lo
que necesitas importa antes de usar.


> Ver
>
>
> http://stackoverflow.com/questions/142545/python-how-to-make-a-cross-module-variable
>
> a.py contains
>
> print foo
>
> b.py contains
>
> import __builtin__
> __builtin__.foo = 1import a
>
>
>
Este "truco" no es lo que usa web2py.
El interprete de python también usa un método parecido a web2py, por ej
para la variable __name__


> Esto lo descubri, viendo que web2py
> http://www.web2py.com/init/default/index
>
> usa en los metodos de accion acceso a "variables globales" como response,
> current y otros. Ver
> http://web2py.com/book/default/chapter/04#API
>
> Pero no estoy seguro como "inyecta" esas variables. Usa el truco de
> definirlas en __builtin__? Estuve explorando en el codigo, pero todavia no
> lo encontre.
>

Usa exec:

https://code.google.com/p/web2py/source/browse/gluon/restricted.py#202


>
> Porque por lo que entiendo, deberian ser thread safe (o sea, el response
> de un thread, no deberia confundirse con el response de otro thread). Asi
> que no se si se puede aplicar el truco de __builtin__
>
>
Si, el metodo es thread safe porque para cada request/response se arma un
entorno (environment) con variables propias.
Ademas, usa espacios de memoria para cada hilo (threading.local)
No usa builtin


>  Como es?
>
>

El mecanismo en si no es ningún truco, exec y eval se usa internamente por
la sentencia import y a lo largo de muchos módulos de la librería estándar.


> Gracias por adelantado, nos leemos!
>
> Angel "Java" Lopez
> @ajlopez
>
>
>
> Pero no estoy seguro como lo hace web2py, para que
>
>
Lo hace para que sea más dinámico y sencillo de escribir el código.
En este sentido es un poco más parecido a PHP, y es diferente a la mayoría
de frameworks python.

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20131012/e003ed86/attachment.html>


More information about the pyar mailing list