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:
def outer():
def inner():
return '+++'
return inner
Zapiszmy wywołanie outer w
zmiennej res:
res = outer()
print(res)
Po wykonaniu kodu wyświetli się obiekt z funkcją:
<function outer.<locals>.inner at 0x000001564A212B90>
Jeśli jednak wywołać zmienną res z
nawiasami okrągłymi, to zwrócona zostanie wiadomość
'+++':
print(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:
res = outer()()
print(res) # wyświetli '+++'
Dany jest następujący kod:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Powiedz, co wyświetli się w konsoli.
Dany jest następujący kod:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Powiedz, co wyświetli się w konsoli.