Falsy et truthy

Expressions après un if

Jusqu’ici les expressions qu’on a utilisées donnait un booléens une fois évaluées, mais un expression apès un if peut être d’un autre type.

Par exemple, un entier:

x = 0
if x:
    print("x n'est pas nul")
else:
    print("x est nul")

# affiche: x est nul

On dit que 0 est Falsy, parce qu’après un if, il se comporte comme une expression qui vaudrait False.

Réciproquement, tous les entiers sauf 0 sont Truthy, parce qu’ils se comportent comme une expression qui vaudrait True:

y = 6
if y:
    print("y n'est pas nul")
else:
    print("y est nul")

# affiche: y n'est pas nul

On retrouve ce principe avec les chaînes de caractères:

message = ""
if message:
    print("le message n'est pas vide")
else:
    print("le message est vide")
# affiche: le message est vide

Le chaînes vides sont falsy, les autres sont truthy.

Expressions quelconques

En fait, on peut utiliser tous les opérateurs booléens avec des expressions quelconques:

message = ""
if not message:
    print("le message est vide")
# affiche : le message est vide


score = 42
if message and score:
    print("le message et le score sont truthy")
# affiche : le message et le score sont truthy