Subtilités lors de l'utilisation des fonctions internes en Python

En Python, il peut non seulement y avoir des fonctions imbriquées, mais une fonction peut également en retourner une autre. Par exemple, supposons que la fonction outer retourne comme résultat le code source de la fonction inner :

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

  return inner

Enregistrons l'appel de outer dans la variable res :

pythonres = outer()
print(res)

Après l'exécution du code, l'objet de la fonction sera affiché :

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

Si on appelle la variable res avec des parenthèses, le message '+++' sera retourné :

pythonprint(res()) # affichera '+++'

On peut réécrire le code pour que res contienne outer avec deux paires de parenthèses - pour appeler elle-même et la fonction inner. Il s'ensuit que l'on peut ajouter des parenthèses supplémentaires à droite de la fonction externe selon le nombre de fonctions qu'elle imbrique :

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

Voici le code suivant :

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

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

Dites ce qui sera affiché dans la console.

Задание 2

Voici le code suivant :

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

  return inner
  
res = outer()
print(res)

Dites ce qui sera affiché dans la console.