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)
Ասեք, թե ինչ կարտացոլվի կոնսոլում: