Ֆունկցիան ֆունկցիայի մեջ Python-ում
Python-ում մի ֆունկցիաների ներսում կարելի է
հայտարարել այլ ֆունկցիաներ: Ենթադրենք, մենք ունենք արտաքին ֆունկցիա
outer, որի ներսում գտնվում է
inner ֆունկցիան:
def outer():
def inner():
pass
Վերոնշյալ օրինակը բավականին պարզ տեսք ունի:
Սակայն հաճախ լինում են իրավիճակներ, երբ
outer ֆունկցիայի մարմնում, բացի
inner-ից, կատարվում են նաև այլ
գործողություններ: Կոդը պարզեցնելու համար կարելի էր
inner-ը դուրս բերել արտաքին բլոկ,
սակայն այս ֆունկցիան կօգտագործվի
միայն մեկ անգամ և միայն outer ֆունկցիայի ներսում:
Ուստի այն դուրս բերելը իմաստ չունի:
Դիտարկենք մի օրինակ, երբ ֆունկցիային
outer փոխանցվում է ցանկ: Իսկ inner ֆունկցիայի միջոցով
ցանկի թվային տարրը
կբարձրացվի քառակուսի:
Դրա համար inner ֆունկցիայից հետո
հայտարարում ենք դատարկ ցանկ res, որի
մեջ կհավաքվեն քառակուսի բարձրացված
տարրերը ցիկլում:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Կանչենք outer ֆունկցիան,
նրան փոխանցենք պարամետր ցանկ և արդյունքը
արտածենք կոնսոլ:
print(outer([2, 3, 5])) # կարտածի [4, 9, 25]
Գրեք արտաքին և ներքին ֆունկցիաներ, որոնց համատեղ աշխատանքը կարտածի ցանկի յուրաքանչյուր տողային տարր մեծատառով:
Տրված են ֆունկցիաները:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Վերագրեք կոդն այնպես, որ func1-ը
լինի func2-ի ներքին ֆունկցիան: