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)
Консолга нима чиқади, айтинг.