Pythonда функция ичида функция
Pythonда бир функциялар ичида бошқаларини
эълон қилиш мумкин. Фарз қилайлик, бизда
outer ташқи функция мавжуд, унинг
ичида inner функция жойлашган:
def outer():
def inner():
pass
Юқорида келтирилган мисол жуда оддий
кўринишга эга. Аммо, кўп hолларда
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]
Рўйхатнинг hар бир сатр элементини бош hарф билан чиқарувчи ташқи ва ички функцияларни ёзинг.
Функциялар берилган:
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 учун ички
функция бўладиган қилиб кўчиринг.