Je mets des accolades vides comme valeur par défaut pour un argument optionnel à une fonction Python, et pylint (en utilisant le paquet Sublime)) me disent que c'est dangereux. Quelqu'un peut-il expliquer pourquoi c'est le cas? une meilleure alternative pour utiliser None à la place?
Ce n'est dangereux que si votre fonction modifie l'argument. Si vous modifiez un argument par défaut, il persistera jusqu'au prochain appel. Par conséquent, votre dict "vide" commencera à contenir des valeurs pour les appels autres que le premier.
Oui, utiliser None
est à la fois sûr et conventionnel.
Regardons un exemple:
def f(value, key, hash={}):
hash[value] = key
return hash
print f('a', 1)
print f('b', 2)
Ce que vous vous attendez probablement à produire:
{'a': 1}
{'b': 2}
Mais en réalité, produit:
{'a': 1}
{'a': 1, 'b': 2}