Python'da Fonksiyon İçinde Fonksiyon
Python'da bazı fonksiyonların içinde
başka fonksiyonlar tanımlanabilir.
Diyelim ki bir outer dış fonksiyonumuz var,
onun içinde de inner fonksiyonu bulunuyor:
def outer():
def inner():
pass
Yukarıdaki örnek oldukça basit görünüyor.
Ancak genellikle outer fonksiyonunun gövdesinde
inner dışında başka işlemlerin de
yapıldığı durumlarla karşılaşılır. Kodu basitleştirmek
için inner'ı dış kod bloğuna çıkarmak
mümkün olabilirdi, ancak bu fonksiyon sadece bir kez
ve sadece outer fonksiyonunun içinde
kullanılacak. Bu nedenle onu dışarı çıkarmak bir anlam ifade etmez.
Şimdi, outer fonksiyonuna bir listenin
iletildiği bir örneği ele alalım. inner
fonksiyonu yardımıyla listenin sayısal elemanları
karesine yükseltilecek. Bunun için inner
fonksiyonundan sonra, içinde karesi alınan elemanların
birikeceği boş bir res listesi tanımlıyoruz:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Şimdi outer fonksiyonunu çağıralım,
ona bir liste parametresi geçelim ve sonucu konsola yazdıralım:
print(outer([2, 3, 5])) # [4, 9, 25] yazdıracak
Bir listenin her string elemanını büyük harfle yazdıracak olan dış ve iç fonksiyonları yazın.
Aşağıdaki fonksiyonlar verilmiştir:
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, func1'in func2 için
bir iç fonksiyon olacak şekilde yeniden yazın.