Pythonda Nested (İç içe fonksiyonlar) da anlamadığım kısım

Neden koyalim?

s yerine sayici() koyarak gorebiliriz:

sayici()()

Yani bu ikincisi, fonksiyonun dondurdugu fonksiyonu cagiriyor.

Goremiyoruz:

def sayıcı():
    sayı = 0
    def say():
        nonlocal sayı
        sayı += 1
        return sayı
    return say

print(sayıcı())
print(sayıcı())
print(sayıcı())
<function sayıcı.<locals>.say at 0x7f868f52ad40>
<function sayıcı.<locals>.say at 0x7f868f52ad40>
<function sayıcı.<locals>.say at 0x7f868f52ad40>

(bkz: Soru Sorarken Sıkça Düşülen Hatalar / #6)

:+1:

Evet ama s = fonk() deyip s(); s(); s() yazmak ayni sey degil. fonk 1, dondurdugu 3 kere cagriliyor. fonk()(); fonk()(); fonk()() yapinca fonk 3 kere, her dondurdugu de birer kere cagriliyor.

Soru veya tartisma esnasinda “tek parantezle” gibi (yanlis) terimler turetmek yerine hepimizin ortak dili olan python’u kullanirsak herkesin isi kolaylasir. Burada demeye calistiginiz sey fonk’un sayi return etmemesi, print(fonk())'un sayi yazmamasi mi?

s’in bir degeri var. s bir closure (calismasi yarim kalmis fonksiyon denebilir). Icinde her seyi tutabilir. Bu ornekte sayi degiskenini tutuyor.

1 Beğeni