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:

pythondef outer():
  def inner():
    return '+++'

  return inner

Vamos armazenar a chamada de outer na variável res:

pythonres = outer()
print(res)

Após a execução do código, será exibido um objeto de função:

python<function outer.<locals>.inner at 0x000001564A212B90>

Se a variável res for chamada com parênteses, a mensagem '+++' será retornada:

pythonprint(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:

pythonres = outer()()
print(res) # exibirá '+++'
Задание 1

Dado o seguinte código:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

Digite o que será exibido no console.

Задание 2

Dado o seguinte código:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

Digite o que será exibido no console.