Тънкости при работа с вътрешни функции в 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)
Кажете какво ще се изведе в конзолата.