Varsayılan olarak immutable boş bir tuple tasarlamanızla ilgili hiçbir sorun yoktur. Bununla birlikte, sezgisel olmayan tasarım yaklaşımı olarak düşünülebilir. Tuple'daki belirli yerlere yapılan göndermeler, bir istisnanın ortaya çıkmasına neden olabilir. Eğer argüman kontrolleri oluşturmaya yetecek kadar dikkatli iseniz, bu bir problem olmayacaktır, fakat kodun geri kalanını belirli konumlardan veri beklerseniz ve tuple boş olduğunu doğrulamazsanız, bu hatalara neden olur.
Hedefinizin argüman için ne olduğuna bağlıdır. Boş bir liste, bir varsayılan argüman için daha açık uygulamalara sahip olacaktır (en azından listeyi bir şekilde değiştirenler), ancak boş bir değişmez tuple, herhangi bir argümanın verilmediğinin yanı sıra, herhangi bir sezgisel kullanım gerektirmeyecektir.
def foo(a, b=None):
işlevi 'for' döngünün dışında bir şey yapıyor mu: argümanlar ayarlanmamış varsayılan argümanlar için
tipik yaklaşım açıkça vurguladığı Yok bunları ayarlamak olacaktır ? – DSM
Hayır, işlevde istediğinizin değişmez yinelenebilir olduğunu varsayıyorum. – Ben
Bir şey mi eksik? Varsayılan argümanın kullanılabileceği yegane yöntem, foo() 'gibi argümanlar olmadan" foo "kelimesini manuel olarak çağırmanızdır. Ama eğer fonksiyonun yinelenebilir değilse, sadece bir şey yaptığını biliyorsan, neden bunu yazardın? – DSM