Dans ce cas particulier, c'est mauvais car une liste vide est évaluée à false. Si vous muter la liste, les résultats ne seront pas comme prévu
def func(x=None):
x = x or []
x.append('hello')
mylist = []
func(mylist)
print mylist[0] # doesn't work
Puisque vous voulez vérifier si l'appelant a adopté None
ou non, vous devez simplement dire que explicitement et ne pas essayer d'être intelligent. Les objets tels que []
, ()
, {}
, 0
et False
sont fausses, tout objet défini par l'utilisateur qui souhaite vérifier la présence de fausses valeurs peut réellement détecter trop de faux positifs.
(aussi: Utilisation is None
au lieu de == None
can be faster and more reliable.)