Python'da İç Fonksiyonlarla Çalışırken Karşılaşılan Nüanslar
Python'da sadece iç içe fonksiyonlar olmakla kalmaz, aynı zamanda bir fonksiyon başka bir fonksiyonu da döndürebilir. Örneğin, outer fonksiyonunun bir sonuç olarak inner fonksiyonunun kaynak kodunu döndürdüğünü varsayalım:
def outer():
def inner():
return '+++'
return inner
Hadi outer çağrısını res değişkenine kaydedelim:
res = outer()
print(res)
Kod çalıştırıldıktan sonra fonksiyonlu bir nesne yazdırılacak:
<function outer.<locals>.inner at 0x000001564A212B90>
Eğer res değişkeni parantezlerle birlikte çağrılırsa, '+++' mesajı dönecektir:
print(res()) # '+++' yazdıracak
Kodu, res içine outer'ın kendisini ve inner fonksiyonunu çağırmak için iki parantezle kaydedilecek şekilde yeniden yazabiliriz. Buradan çıkarılacak sonuç, dış fonksiyonun sağına, içine yerleştirilmiş fonksiyonların sayısına göre ek parantezler eklenebileceğidir:
res = outer()()
print(res) # '+++' yazdıracak
Aşağıdaki kod verilmiştir:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Konsola ne yazdırılacağını söyleyin.
Aşağıdaki kod verilmiştir:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Konsola ne yazdırılacağını söyleyin.