[pyar] Puedo hacer el equivalente de "." de bash?

Mariano Guerra luismarianoguerra en gmail.com
Mie Mar 28 15:42:52 ART 2012


2012/3/28 Mariano Guerra <luismarianoguerra en gmail.com>:
> 2012/3/28 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> On 03/28/2012 03:35 PM, Emiliano M. Rudenick wrote:
>>>
>>> El Wed, 28 Mar 2012 15:22:28 -0300
>>> Roberto Alsina<ralsina en netmanagers.com.ar>  escribió:
>>>>
>>>> Un poquito de contexto:
>>>>
>>>> Supongamos que tengo un modulo m.py que contiene únicamente esto:
>>>>
>>>> def f1(x=CONST):
>>>>      print x
>>>>
>>>> Y tengo un script s.py que contiene únicamente esto:
>>>>
>>>> CONST = 4
>>>>
>>>> [magia]
>>>>
>>>> f1()
>>>>
>>>> Cual sería la [magia] para que eso imprima "4"? :-)
>>>>
>>>> Saludos,
>>>
>>>
>>> Se ve medio feo creo, ¿pero no funciona import f1 from m?
>>>
>>
>> No, me dice que CONST no está definida.
>
>>>> CONST=4
>>>> def f1(x=CONST):
> ...    print x
> ...
>>>> f1.func_defaults = (5,)
>>>> f1()
> 5
>
> notece que se donde se reemplazo CONST
>
> el tema es que los parametros por defecto son evaluados al crear la
> funcion, osea cuando el modulo se importa
>
> miraste algo de import hooks?

>> inspect.getargspec(f1)
ArgSpec(args=['x'], varargs=None, keywords=None, defaults=(4,))

el tema es que se pierde el hecho de que el 4 venia de CONST

otra, reescribi el ast para reemplazar CONST por algo que te interese:

http://docs.python.org/library/ast.html?highlight=ast#ast.NodeTransformer



More information about the pyar mailing list