web-dev-qa-db-fra.com

Python Syntaxe 'Si non'

Je suis un peu confus quant à la raison/pourquoi tant de python développeurs utilisent if not dans leurs instructions conditionnelles.

par exemple, disons que nous avions une fonction,

def foo(bar = None):
    if not bar:
        bar = 2

Mais pourquoi faire comme ça? Je veux dire, est-ce que faire if bar != None ou if bar is not None ne serait pas plus explicite? Qu'est-ce que if not essaie de dire?

138

Oui, if bar is not None est plus explicite, et donc meilleur, en supposant que c’est bien ce que vous voulez. Ce n'est pas toujours le cas, il y a des différences subtiles: if not bar: sera exécuté si bar est un type quelconque de conteneur zéro ou vide, ou False. Beaucoup de gens utilisent not bar où ils font vraiment signifie bar is not None.

176
user395760