Pythonда функция ичида функция

Pythonда бир функциялар ичида бошқаларини эълон қилиш мумкин. Фарз қилайлик, бизда outer ташқи функция мавжуд, унинг ичида inner функция жойлашган:

pythondef outer():
  def inner():
    pass

Юқорида келтирилган мисол жуда оддий кўринишга эга. Аммо, кўп hолларда 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

Рўйхатнинг hар бир сатр элементини бош hарф билан чиқарувчи ташқи ва ички функцияларни ёзинг.

Задание 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 учун ички функция бўладиган қилиб кўчиринг.