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