Gli argomenti predefiniti del modulo x={}
in genere non raggiungono lo scopo previsto in Python, poiché gli argomenti predefiniti sono associati quando una funzione è definita, non chiamata.Qual è il modo più pitone di usare un dizionario vuoto come argomento predefinito?
La convenzione sembra essere quella di impostare gli oggetti mutabili come argomenti predefiniti con x=None
e quindi controllare x is None
per assegnare il valore predefinito corretto quando viene chiamata la funzione.
Quindi, se mi piacerebbe lanciare x
a un dizionario che è per default vuota, vorrei utilizzare qualcosa come il seguente:
def f(x=None):
x = dict(x) if x is not None else {}
Tuttavia, poiché dict
può assumere qualsiasi iterabile, potrei anche scrivere questo versione più succinta:
def f(x=()):
x = dict(x)
Quale di questi è l'approccio "giusto"?