Нюансы при работе с внутренней функцией в Python
В Python могут быть не только вложенные
функции, но и одна функция может
возвращать другую. Например,
пусть функция outer
возвращает
как результат исходный код
функции inner
:
def outer():
def inner():
return '+++'
return inner
Давайте запишем
вызов outer
в
переменную
res
:
res = outer()
print(res)
После выполнения кода выведется объект с функцией:
<function outer.<locals>.inner at 0x000001564A212B90>
Если же вызвать переменную res
с круглыми
скобками, то вернется сообщение '+++'
:
print(res()) # выведет '+++'
Можно переписать код так, чтобы
в res
записывалась outer
с двумя круглыми скобками - для вызова самой себя
и функции inner
. Из чего следует, что можно
записывать дополнительные круглые скобки справа
от внешней функции по количеству, вложенных
в нее функций:
res = outer()()
print(res) # выведет '+++'
Дан следующий код:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Скажите, что выведется в консоль.
Дан следующий код:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Скажите, что выведется в консоль.