[pyar] Accesar dentro de una función anidada.
Daniel Moisset
dmoisset en machinalis.com
Lun Mayo 9 11:37:30 ART 2011
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,
D.
More information about the pyar
mailing list