È un errore comune impostare un oggetto mutabile come valore predefinito di un argomento in una funzione. Ecco un esempio tratto da this excellent write-up by David Goodger:Buoni usi per i valori predefiniti dell'argomento di funzione mutabile?
>>> def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
La spiegazione per cui questo accade è here.
E ora per la mia domanda: C'è una buona causa d'uso per questa sintassi?
Voglio dire, se tutti quelli che incontra fanno lo stesso errore, lo fa il debug, capisce il problema e da questo cerca di evitarlo, a cosa serve questa sintassi?
Vedere http: // stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – sdolan
La spiegazione migliore che conosco per questo è nella domanda collegata: le funzioni sono oggetti di prima classe, proprio come le classi. Le classi hanno dati di attributi mutabili; le funzioni hanno valori di default mutabili. – katrielalex
http: // stackoverflow.it/questions/2639915/why-the-mutable-default-argument-fix-syntax-is-so-ugly-chiede-python-newbie – katrielalex