Pythonda funksiya ichida funksiya
Pythonda bir funksiyalar ichida boshqalari
e'lon qilinishi mumkin. Faraz qilaylik, bizda
outer tashqi funksiyasi bor, uning ichida
inner funksiyasi joylashgan:
def outer():
def inner():
pass
Yuqoridagi misol juda oddiy ko'rinadi.
Biroq, ko'pincha outer funksiyasi tana qismida
inner dan tashqari boshqa
amallar ham bajariladigan vaziyatlar mavjud.
Kodni soddalashtirish uchun inner ni tashqi kod
blokiga chiqarish mumkin edi, ammo bu funksiya
faqat bir marta va faqat outer funksiyasi
ichida ishlatiladi. Shuning uchun uni chegaralardan
tashqariga chiqarish ma'nosiz.
Keling, outer funksiyasiga ro'yxat
uzatiladigan misolni ko'rib chiqaylik.
inner funksiyasi yordamida esa
ro'yxatdagi raqamli element kvadrat darajaga
ko'tariladi. Buning uchun inner funksiyasidan
keyin biz bo'sh res ro'yxatini
e'lon qilamiz, unda tsikl davomida
kvadratga ko'tarilgan elementlar to'planadi:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Keling, outer funksiyasini chaqiraylik,
unga parametr sifatida ro'yxat uzatamiz va
natijani konsolga chiqaramiz:
print(outer([2, 3, 5])) # [4, 9, 25] ni chiqaradi
Tashqi va ichki funksiyalarni yozing, ularning birgalikdagi ishi ro'yxatdagi har bir satrli elementni bosh harf bilan chiqarsin.
Quyidagi funksiyalar berilgan:
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 ning
ichki funksiyasi bo'ladigan qayta yozing.