Nuances ao trabalhar com funções internas em Python
Em Python, não só podem existir funções
aninhadas, mas uma função também pode retornar
outra. Por exemplo, suponha que a função outer
retorne como resultado o código fonte da
função inner:
def outer():
def inner():
return '+++'
return inner
Vamos armazenar a chamada de outer
na variável res:
res = outer()
print(res)
Após a execução do código, será exibido um objeto de função:
<function outer.<locals>.inner at 0x000001564A212B90>
Se a variável res for chamada com
parênteses, a mensagem
'+++' será retornada:
print(res()) # exibirá '+++'
O código pode ser reescrito para que res
armazene outer com dois pares de
parênteses - para chamar a si mesma e a função
inner. Disso segue que
parênteses adicionais podem ser adicionados
à direita da função externa, de acordo com a quantidade
de funções nela aninhadas:
res = outer()()
print(res) # exibirá '+++'
Dado o seguinte código:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Digite o que será exibido no console.
Dado o seguinte código:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Digite o que será exibido no console.