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 үчүн ички функция болушу үчүн кодду кайра жазыңыз.