Python'до функция ичинде функция
Python'до бир функциялардын ичинде башкаларды жарыялоого болот.
Бизде сырткы функция
outer бар дейли, анын ичинде
inner функциясы жатат:
def outer():
def inner():
pass
Жогоруда келтирилген мисал өтө жөнөкөй көрүнөт.
Бирок, көп учурларда
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] чыгарат
Сырткы жана ички функцияларды жазыңыз, алардын биргелешкен иши тизменин ар бир сап элементин баш тамгасы менен чыгарышы керек.
Төмөндөгү функциялар берилген:
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 үчүн ички функция болушу үчүн кодду кайра жазыңыз.