Python-da funksiya icinde funksiya
Python-da bir funksiyalarin icinde basqalarini
teyin etmek olar. Tutaq ki, bizim outer
adli xarici funksiyamiz var, onun icinde ise
inner funksiyasi yerlesir:
def outer():
def inner():
pass
Yuxaridaki numune kifayet qeder sade gorunur.
Lakin tez-tez elə hallar olur ki, outer
funksiyasinin bedeninde inner-den basqa
emeliyyatlar da yerine yetirilir. Kodu sadelesdirmek
ucun inner-ni xarici kod blokuna cixarmaq
olar idi, lakin bu funksiya yalniz bir defe ve
yalniz outer funksiyasinin daxilinde
istifade olunacaq. Ona gore de onu xaricə cixartmagin
menası yoxdur.
Gelin bir numuneye baxaq, burada outer
funksiyasina siyahi oturulur. inner
funksiyasi vasitesile ise siyahinin ededi
elementi kvadrat qüvvete yukseldilir. Bunun
ucun inner funksiyasindan sonra icinde
kvadrata yukseldilmis elementlerin yigilacagi
bos res siyahisini teyin edirik, dovrde:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Gelin outer funksiyasini cagiraq,
ona parametr kimi siyahini otureq ve
neticeni konsola cixartaq:
print(outer([2, 3, 5])) # [4, 9, 25] cixardacaq
Xarici ve daxili funksiyalar yazin, onlarin birge işi siyahinin her bir metin elementini boyuk herfle cixartsin.
Funksiyalar verilib:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Kodu elə deyişin ki, func1
func2 ucun daxili funksiya olsun.