Fonksiyon tanımına ilginç bir boyut katmış bu soru. Yazınızın son 2 cümlesi hariç anladım. Siz output ne buldunuz? Bir de işin ilginci ben compiler'a yazdığımda error aldım.Fonksiyon içindeki eşitlik ifadesi ilk değeri olmayan şeyler için olması lazım.
X() ifadesi ise fonksiyon çağırma. Def ile X ve Y fonksiyonu tanımlanmış. 3 nedir diyorsanız Y fonksiyonunun değeri oluyor.
X(2) 4 döndürüyor. Çünkü a'yı 2 olarak yolluyoruz. İçinde b de 2 oluyor sanırım. Bu şekilde fonksiyon tanımını bilmiyorum aslında. Ama öyle kabul edersek return a+b kısmından 4 geliyor.
Kabul etmezsek de if a==0 kısmına geliyor. Onun içine girmez. Dolayısıyla return Y(a)'a girer. a=2 demiştik. Y fonksiyonunda b de a, yani 2 olarak tanımlanıyor. Yine aynı kapıya çıkıyor.
İkinci kısımda ise a'yı yollamıyoruz. Bu yüzden a=0. Fonksiyon tanımından geliyor. b=3. return a+b'den de 3 geliyor.
Diğer türlü hesaplayınca 0 hesapladım ben. Programı çalıştırınca çıkan sonuca uygun değil. O yüzden öyle çalışıyormuş.
Evet şimdi anladım. Çözümde sıkıntı yok ama kafama takılan yazdığımda error vermesi. Siz compiler'a yazıp output aldınız mı?Girintileri yanlış yapmış olabilirsiniz. İlk kısım 4, ikinci kısım 3 döndürüyor.
def x(a = 0):
def y(b = a):
return a + b
if a == 0:
return y
return y(a)
print(x(2) + x()(3))
Anladım hocam teşekkür ederim.Evet. Dediğim gibi girinti hatanız olmuştur. Tekrar yazıp atıyorum buraya.
Kod:def x(a = 0): def y(b = a): return a + b if a == 0: return y return y(a) print(x(2) + x()(3))
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.