Python-da funksiya icinde funksiya

Python-da bir funksiyalarin icinde basqalarini teyin etmek olar. Tutaq ki, bizim outer adli xarici funksiyamiz var, onun icinde ise inner funksiyasi yerlesir:

pythondef outer():
  def inner():
    pass

Yuxaridaki numune kifayet qeder sade gorunur. Lakin tez-tez elə hallar olur ki, outer funksiyasinin bedeninde inner-den basqa emeliyyatlar da yerine yetirilir. Kodu sadelesdirmek ucun inner-ni xarici kod blokuna cixarmaq olar idi, lakin bu funksiya yalniz bir defe ve yalniz outer funksiyasinin daxilinde istifade olunacaq. Ona gore de onu xaricə cixartmagin menası yoxdur.

Gelin bir numuneye baxaq, burada outer funksiyasina siyahi oturulur. inner funksiyasi vasitesile ise siyahinin ededi elementi kvadrat qüvvete yukseldilir. Bunun ucun inner funksiyasindan sonra icinde kvadrata yukseldilmis elementlerin yigilacagi bos res siyahisini teyin edirik, dovrde:

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

  res = []

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

  return res

Gelin outer funksiyasini cagiraq, ona parametr kimi siyahini otureq ve neticeni konsola cixartaq:

pythonprint(outer([2, 3, 5])) # [4, 9, 25] cixardacaq
Задание 1

Xarici ve daxili funksiyalar yazin, onlarin birge işi siyahinin her bir metin elementini boyuk herfle cixartsin.

Задание 2

Funksiyalar verilib:

pythondef func1(num):
  if num > 0:
    num += 2
  return num
  
def func2(iter):
  res = []
  for el in iter:
    res.append(func1(el))

  return res

Kodu elə deyişin ki, func1 func2 ucun daxili funksiya olsun.