Нюансы при работе с внутренней функцией в 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)
Скажите, что выведется в консоль.