Sobes.tech
Senior

Değiştirilebilir varsayılan argümanlı bir fonksiyonda her print ne gösterecek?

sobes.tech yapay zeka

AI'dan gelen yanıt

Fonksiyonların varsayılan olarak değiştirilebilir (mutable) argümanlar alabileceği dillerde, örneğin Python'da, varsayılan değerler fonksiyon tanımlandığında bir kez başlatılır, her çağrıda değil. Bu, varsayılan argüman bir değiştirilebilir nesne (örneğin, liste veya sözlük) ise, bu nesne üzerindeki değişikliklerin çağrılar arasında korunmasına neden olur.

Python'da örnek:


def func(a, lst=[]):
    lst.append(a)
    print(lst)

func(1)  # Çıktı: [1]
func(2)  # Çıktı: [1, 2]
func(3, ['x'])  # Çıktı: ['x', 3]
func(4)  # Çıktı: [1, 2, 4]

Açıklama:

  • İlk çağrıda func(1) varsayılan liste [] kullanılır ve 1 eklenir.
  • İkinci çağrıda func(2) aynı liste kullanılır, şu an [1], ve 2 eklenir.
  • func(3, ['x']) çağrısında yeni bir liste ['x'] geçirilir, bu nedenle değişiklikler varsayılanı etkilemez.
  • Son çağrıda func(4) tekrar varsayılan liste kullanılır, şu an [1, 2], ve 4 eklenir.

Bu şekilde, her print çağrısı, çağrılar arasında değişiklikleri koruyan değiştirilebilir varsayılan argümanın güncel durumunu gösterecektir.