Niuanse przy pracy z funkcją wewnętrzną w Pythonie

W Pythonie mogą istnieć nie tylko funkcje zagnieżdżone, ale także jedna funkcja może zwracać inną. Na przykład, niech funkcja outer zwraca jako wynik kod źródłowy funkcji inner:

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

  return inner

Zapiszmy wywołanie outer w zmiennej res:

pythonres = outer()
print(res)

Po wykonaniu kodu wyświetli się obiekt z funkcją:

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

Jeśli jednak wywołać zmienną res z nawiasami okrągłymi, to zwrócona zostanie wiadomość '+++':

pythonprint(res()) # wyświetli '+++'

Można przepisać kod tak, aby do res zapisana została outer z dwoma nawiasami okrągłymi - dla wywołania samej siebie i funkcji inner. Z czego wynika, że można zapisywać dodatkowe nawiasy okrągłe z prawej strony funkcji zewnętrznej według liczby funkcji w niej zagnieżdżonych:

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

Dany jest następujący kod:

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

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

Powiedz, co wyświetli się w konsoli.

Задание 2

Dany jest następujący kod:

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

  return inner
  
res = outer()
print(res)

Powiedz, co wyświetli się w konsoli.