Bo

Booléens en Python

70 exercices

À propos de Booléens

Python représente les valeurs vrai et faux avec le type bool, qui est une sous-classe de int. Ce type ne comporte que deux valeurs booléennes : True et False. Ces valeurs peuvent être affectées à une variable et combinées avec les opérateurs booléens (and, or, not) :

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

Les opérateurs booléens utilisent l'évaluation par court-circuit, ce qui signifie que l'expression à droite de l'opérateur n'est évaluée que si c'est nécessaire.

Chaque opérateur a une priorité différente : not est évalué avant and et or. Les parenthèses permettent d'évaluer une partie de l'expression avant les autres :

>>> not True and True
False

>>> not (True and False)
True

Tous les boolean operators sont considérés comme ayant une priorité inférieure à celle des comparison operators de Python, comme ==, >, <, is et is not.

Conversion de type et truthiness

La fonction bool (bool()) convertit n'importe quel objet en une valeur booléenne. Par défaut, tous les objets renvoient True, sauf s'ils sont définis pour renvoyer False.

Quelques built-ins sont toujours considérés comme False par définition :

  • les constantes None et False
  • le zéro de n'importe quel type numérique (int, float, complex, decimal ou fraction)
  • les séquences et collections vides (str, list, set, tuple, dict, range(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

Lorsqu'un objet est utilisé dans un contexte booléen, il est évalué de façon transparente comme truthy ou falsey avec bool() :

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

Une classe peut définir la façon dont elle est évaluée dans des situations truthy si elle redéfinit et implémente une méthode __bool__(), et/ou une méthode __len__().

Comment les booléens fonctionnent en interne

Le type bool est implémenté comme un sous-type de int. Cela signifie que True est numériquement égal à 1 et que False est numériquement égal à 0. On peut le constater en les comparant avec un opérateur d'égalité :

>>> 1 == True
True

>>> 0 == False
True

Cependant, les bools sont toujours différents des ints, comme on le constate en les comparant avec l'opérateur d'identité, is :

>>> 1 is True
False

>>> 0 is False
False

Remarque : dans Python >= 3.8, utiliser un littéral (comme 1, '', [] ou {}) du côté gauche de is déclenche un avertissement.

Utiliser l'opérateur d'égalité pour comparer une variable booléenne à True ou False est considéré comme un anti-patron Python. Il faut plutôt utiliser l'opérateur d'identité is :


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Booléens

L'entraînement est verrouillé

Déverrouille 2 exercices de plus pour t'entraîner sur Booléens