Нијанси при работа со внатрешна функција во 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)
Кажете што ќе се испечати во конзола.