Нюансҳо дар кор бо функсияи дохилӣ дар 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)
Бигӯед, ки дар консол чӣ чоп мешавад.