Ֆունկցիան ֆունկցիայի մեջ Python-ում

Python-ում մի ֆունկցիաների ներսում կարելի է հայտարարել այլ ֆունկցիաներ: Ենթադրենք, մենք ունենք արտաքին ֆունկցիա outer, որի ներսում գտնվում է inner ֆունկցիան:

pythondef outer():
  def inner():
    pass

Վերոնշյալ օրինակը բավականին պարզ տեսք ունի: Սակայն հաճախ լինում են իրավիճակներ, երբ outer ֆունկցիայի մարմնում, բացի inner-ից, կատարվում են նաև այլ գործողություններ: Կոդը պարզեցնելու համար կարելի էր inner-ը դուրս բերել արտաքին բլոկ, սակայն այս ֆունկցիան կօգտագործվի միայն մեկ անգամ և միայն outer ֆունկցիայի ներսում: Ուստի այն դուրս բերելը իմաստ չունի:

Դիտարկենք մի օրինակ, երբ ֆունկցիային outer փոխանցվում է ցանկ: Իսկ inner ֆունկցիայի միջոցով ցանկի թվային տարրը կբարձրացվի քառակուսի: Դրա համար inner ֆունկցիայից հետո հայտարարում ենք դատարկ ցանկ res, որի մեջ կհավաքվեն քառակուսի բարձրացված տարրերը ցիկլում:

pythondef outer(lst):
  def inner(num):
    return num ** 2

  res = []

  for el in lst:
    res.append(inner(el))

  return res

Կանչենք outer ֆունկցիան, նրան փոխանցենք պարամետր ցանկ և արդյունքը արտածենք կոնսոլ:

pythonprint(outer([2, 3, 5])) # կարտածի [4, 9, 25]
Задание 1

Գրեք արտաքին և ներքին ֆունկցիաներ, որոնց համատեղ աշխատանքը կարտածի ցանկի յուրաքանչյուր տողային տարր մեծատառով:

Задание 2

Տրված են ֆունկցիաները:

pythondef 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-ի ներքին ֆունկցիան: