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