[pyar] Accesar dentro de una función anidada.
craf
pyclutter en gmail.com
Lun Mayo 9 11:47:36 ART 2011
-----Mensaje original-----
De: Daniel Moisset <dmoisset en machinalis.com>
Reply-to: Python Argentina <pyar en python.org.ar>
Para: Python Argentina <pyar en python.org.ar>
Asunto: Re: [pyar] Accesar dentro de una función anidada.
Fecha: Mon, 9 May 2011 11:37:30 -0300
2011/5/9 craf <pyclutter en gmail.com>:
> Hola a todos!.
>
> Este fin de semana lo pasé, tratando de dilucidar como poder accesar
> dentro de una función anidada:
> Ej.
>
> def uno():
> def dos():
> ------->def tres():
> | print "tres"
> |
> ¿Cómo accedo a la función tres desde afuera de la anidación?.
>No podés
>si te fijas, def f(args):..., es esencialmente una asignacion. O sea,
>es parecido a
>f = lambda args:...
>O sea, en esencia es como preguntar que si tenes
>def uno():
> dos = lambda :...
> variable_local = 17
>como haces para acceder a dos o a variable_local desde afuera de la funcion.
>Pero las variables locales de una funcion (ni el nombre ni el valor
>que asocias) existen hasta que no llamas a la funcion, y si no guardas
>una referencia, desaparecen.
>Lo que *si* podes hacer es llamar a la funcion, y que te
>devuelva/guarde en algun lado la funcion de adentro. Por ejemplo
>podes:
>def uno():
> def dos():
> def tres():
> print "tres"
> return tres # dos devuelve una referencia a la funcion interna
> resultado = dos() # esto llama a dos, obtiene su resultado, que
>esun a referencia a tre
> return resultado # y o devuelve
>variable_global = uno() # llama a uno, y guarda el resultado
>#aca variable_global tiene una referencia a la funcion tres
>variable_global() # Esto hace la llamada. O sea, imprime "tres"
>Saludos,
Hola Daniel!
Muchas gracias por tu aclaración!. Mi duda va por el lado si puedes llamar a la función tres y que imprima
la palabra "tres", al llamarla desde afuera. No es necesario que retorne nada.Llamas a la función sin argumentos.
¿Se puede hacer?.
Saludos.
Cristian
More information about the pyar
mailing list