L'opérateur not est un opérateur logique. Il fait partie des trois opérateurs logiques de Python avec and et or.
Cet opérateur retourne True si son opérande est faux, et False si son opérande est vrai. Nous pouvons dire qu'il inverse la valeur de vérité de l'expression qui le suit.
print("not True est:", not True) print("not False est:", not False)
On remarque que l'opérateur not transforme simplement une valeur vraie en fausse et vice-versa.
Utilisation avec les collections
Au-delà des booléens True et False, des objets peuvent être évalués comme truthy ou falsy. C'est notamment le cas pour les collections :
-
Une collection vide est considérée comme
False -
Une collection non vide est considérée comme
True
L'opérateur not permet de vérifier si une collection est vide :
liste = [1, 2, 3] if not liste: print("La liste est vide") else: print("La liste n'est pas vide, elle contient:", liste) # À noter qu'ici on pourrait simplifier le code en faisant l'inverse if liste: print("La liste n'est pas vide, elle contient:", liste) else: print("La liste est vide")
Attention
L'opérateur not a la précédence la plus élevée parmi les opérateurs logiques not, and et or. Il faut donc faire attention dans le cas où plusieurs expressions sont présentes, car not sera toujours évalué en premier.
Prenons cet exemple :
# Cette expression : not True and False or True # Est évaluée comme : ((not True) and False) or True # Ce qui donne : (False and False) or True # = False or True = True
Si on veut modifier l'ordre d'évaluation :
not (True and False) or True # = not False or True = True or True = True not True and (False or True) # = False and True = False
On remarque que cette règle de précédence suit la logique mathématique habituelle.