Vidinių funkcijų naudojimo Python'e niuansai
Python'e gali būti ne tik įdėtosios
funkcijos, bet ir viena funkcija gali grąžinti
kitą. Pavyzdžiui, tegul funkcija outer
grąžina kaip rezultatą pradinį kodą
funkcijos inner:
def outer():
def inner():
return '+++'
return inner
Įrašykime iškvietimą outer į
kintamąjį res:
res = outer()
print(res)
Vykdant kodą, bus išvestas objektas su funkcija:
<function outer.<locals>.inner at 0x000001564A212B90>
Jei iškviesti kintamąjį res su
apvaliaisiais skliaustais, bus grąžintas pranešimas
'+++':
print(res()) # išves '+++'
Galima perrašyti kodą taip, kad į res
būtų įrašyta outer su dviem poromis apvaliųjų
skliaustų - pačiai sau ir funkcijai
inner iškvietimui. Iš to seka, kad galima
įrašyti papildomus apvaliuosius skliaustus
dešinėje nuo išorinės funkcijos pagal įdėtųjų
funkcijų skaičių:
res = outer()()
print(res) # išves '+++'
Duotas toks kodas:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Pasakykite, kas bus išvesta į konsolę.
Duotas toks kodas:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Pasakykite, kas bus išvesta į konsolę.