İşte bir işlev. Amacım, sağlanmamışsa sözlükte boş bir sözlük oluşturmak için anahtar kelime argümanı varsayılanlarını kullanmaktır.python fonksiyonunda anahtar kelime argümanı için varsayılan değer olarak boş sözlük: Sözlük sonraki çağrılarda {} için başlatılmamış gibi görünüyor mu?
>>> def f(i, d={}, x=3) :
... d[i] = i*i
... x += i
... return x, d
...
>>> f(2)
(5, {2: 4})
Ama sonraki çağrı f, ben aldığımda:
>>> f(3)
(6, {2: 4, 3: 9})
Boş bir sözlüğe göstermiyor ikinci aramada anahtar kelime argüman d benziyor ama daha ziyade bunun yanı sözlüğe önceki aramanın sonunda bırakıldı. Her çağrıda x sayısı sıfırlanır.
Şimdi bu konu üzerinde çalışabilirim, ancak yardımınızı anlamanızı istiyorum. Anahtar kelime argümanlarının işlevin yerel kapsamına olduğuna inandım ve işlev döndükten sonra silinecek. (Kusurluysam ve terminolojimi düzelttiysem.)
Yani d ile işaret edilen yerel değer silinmeli ve bir sonraki çağrıda anahtar kelime argümanını d sağlamazsam d default {}
'a ayarlanmalıdır. Fakat görebildiğiniz gibi d, önceki çağrıda işaret edilen sözlükte ayarlanmaktadır.
Neler oluyor?
literal {}
, kapsam kapsamındaki def satırında mı?
Bu davranış 2,5, 2.6 ve 3.1'de görülmektedir.
: [fonksiyon/metot bağımsız değişkenler için Değişken varsayılan] (http://pythonconquerstheuniverse.wordpress.com/category/python-gotchas/) –