Matices al trabajar con funciones internas en Python
En Python no solo puede haber funciones
anidadas, sino que una función puede devolver
otra. Por ejemplo, supongamos que la función outer
devuelve como resultado el código fuente
de la función inner:
def outer():
def inner():
return '+++'
return inner
Escribamos la llamada a outer en
la variable res:
res = outer()
print(res)
Después de ejecutar el código, se mostrará un objeto de función:
<function outer.<locals>.inner at 0x000001564A212B90>
Si llamamos a la variable res con
paréntesis, se devolverá el mensaje
'+++':
print(res()) # mostrará '+++'
Se puede reescribir el código para que en res
se escriba outer con dos pares de
paréntesis - para llamar a sí misma y a la función
inner. De lo cual se deduce que se pueden
escribir paréntesis adicionales
a la derecha de la función externa según la cantidad
de funciones anidadas en ella:
res = outer()()
print(res) # mostrará '+++'
Se da el siguiente código:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Digamos qué se mostrará en la consola.
Se da el siguiente código:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Digamos qué se mostrará en la consola.