İstihza Python belgelerini okuyordum şuan ileri düzey fonksiyonlardayım ve şöyle bir örnek gördüm
def sayıcı():
sayı = 0
def say():
nonlocal sayı
sayı += 1
return sayı
return say
1.sorum
burada return say ve sayı derken neden parantez koymadık?
2.sorum
Bu fonksiyonu çağırırken eğer sayıcı() diye arka arkaya çağırırsak her seferinde sayıyı 1 1 1 olarak görüyorken neden s = sayıcı() yazıpta s() diye çağırınca 1 2 3 4 5 6 şeklinde görüyoruz yani
sayıcı()
ile
s = sayıcı()
s()
arasındaki fark nedir?
alttaki kodları çalıştırarak görebilirsiniz
def sayıcı():
sayı = 0
def say():
nonlocal sayı
sayı += 1
return sayı
return say()
for i in range(10):
print(sayıcı())
bu üsttekinin sonucu 1 1 1 1 1 1 1 1 olarak çıkıyor
burda orjinal kodu return say() olarak değiştirdim
def sayıcı():
sayı = 0
def say():
nonlocal sayı
sayı += 1
return sayı
return say
s = sayıcı()
for i in range(10):
print(s())
bunda ise 1 2 3 4 5 6 7 8 9 10 diye çıkıyor
burda return say parantez konmadan yazılmış zaten bu kodu python belgelerinden kopyaladım
etkileşimli kabuk kullanmadığımdan for döngüsünde 10 kere ekrana yazdırdım