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:

pythondef 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:

pythondef 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:

pythonprint(outer([2, 3, 5])) # [4, 9, 25] yazdıracak
Задание 1

Bir listenin her string elemanını büyük harfle yazdıracak olan dış ve iç fonksiyonları yazın.

Задание 2

Aşağıdaki fonksiyonlar verilmiştir:

pythondef 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.