Python işlevine isteğe bağlı bir argüman için boş parantezleri varsayılan değer olarak koydum ve pylint (Sublime paketi kullanarak) bunun tehlikeli olduğunu söyledi. Birisi bunun neden böyle olduğunu açıklayabilir mi? Bunun yerine, None kullanmak için daha iyi bir alternatif mi?Boş sözlük neden Python'da tehlikeli bir varsayılan değerdir?
cevap
Bu işlev yalnızca argümanınızı değiştirirse tehlikelidir. Bir varsayılan argümanı değiştirirseniz, bir sonraki çağrıya kadar devam eder, böylece "boş" deminiz, ilkinden başka aramalarda değerler içermeye başlar.
Evet, None
kullanarak bu tür durumlarda hem güvenli hem de gelenekseldir. Bir örneğe
Eğer işlev argümanı değiştirmiyorsa, hala en iyi uygulama adına varsayılan olarak Yok'u kullanmalı mıyız? – NightFurry
@NightFurry: Burada herhangi bir şey yazmayı tereddüt ediyorum - '' Çoğu zaman en iyi seçimdir, ancak belki de zamanın% 100'ü değildir. Kararınızı kullanın, ancak eğer karar veremiyorsanız, “Hiçbiri” güvenli bir bahistir. –
inceleyelim:
def f(value, key, hash={}):
hash[value] = key
return hash
print f('a', 1)
print f('b', 2)
muhtemelen çıkışa bekliyoruz: aslında
{'a': 1}
{'b': 2}
Ama verir:
{'a': 1}
{'a': 1, 'b': 2}
Teşekkürler adamım! Nedeni anlamıyordum :) – maxadamo
- 1. Neden Thread.stop() tehlikeli
- 2. YAML: boş değerle sözlük
- 3. C# Boş kopya sözlük?
- 4. Sözlük, serileştirme üzerinde boş
- 5. Boş Sözlük aşağıdakilere sahip linq
- 6. Raf yanıtı gövdesi neden bir dizi değil bir dizidir? Üçüncü değerdir neden
- 7. İsteğe bağlı değişken için boş bir sözlük nasıl oluşturulur VB.NET
- 8. Potansiyel Tehlikeli Talep
- 9. Bir sözlük listesi, bir sözlük
- 10. boş bir dize olan bir sütun varsayılan
- 11. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 12. Potansiyel olarak tehlikeli bir Request.Form değeri, istemciden
- 13. Varsayılan boş seçeneği kaldır ----- ile boş = True
- 14. 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?
- 15. varsayılan boş DataTemplate yerine varsayılan 'ToString()' DataTemplate
- 16. str_replace() tehlikeli midir?
- 17. TableCellRenderer neden boş?
- 18. Bir lambda sözlük varsayılan olarak kullanmak mümkün mü?
- 19. Ek Açıklama varsayılan "boş" değeri
- 20. Boş değerler için varsayılan değerler
- 21. Allman stilinin JavaScript içerisindeki tehlikeli etkileri
- 22. Boş Konsollarla Varsayılan Oluşturucu C++ Hatası
- 23. HttpContext.Current.User.Identity.Name neden boş döndü
- 24. neden _REQUEST boş
- 25. Neden request.files` boş?
- 26. sözlük?
- 27. Sözlük
- 28. Sözlük?
- 29. JavaScriptCore'a maruz bırakılan bir Swift sözlük öğesini neden ayarlayamıyorum?
- 30. Neden bir sözlük değişkenini ayrı ifadelerde bildirmeyi ve başlatmayı seçer?
varsayılan olarak boş liste pasing sorun argüman, fonksiyonun tüm çağrışımları arasında paylaşılacağıdır - https://docs.python.org/3/tuto'daki "önemli uyarı" konusuna bakın. rial/controlflow.html # default-argument-values – hamed