Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
Les booléens en Python
Un booléen est un type natif de Python qui n'a que deux valeurs possibles : True ou False.
Les booléens sont un sous-type du type natif des nombres entiers :
issubclass(bool, int) # True
Le booléen True
est donc similaire au nombre 1 et le booléen False
au nombre 0.
Il est ainsi possible de réaliser des opérations mathématiques entre un booléen et un entier :
print(True + 1)
print(True - 1)
print(False + 1)
print(False - 1)
print(True * 5)
print(False * 5)
print(True ** 4)
Cela peut sembler inutile, mais c'est très pratique si vous devez par exemple établir un compteur qui se base sur le résultat d'une expression qui résulte sur un booléen.
Par exemple, le code suivant :
utilisateur_inscrit = True
nombre_utilisateurs = 0
if utilisateur_inscrit:
nombre_utilisateurs += 1
print(nombre_utilisateurs)
Peut être simplifié de la sorte, sans la structure conditionnelle :
utilisateur_inscrit = True
nombre_utilisateurs = 0
nombre_utilisateurs += utilisateur_inscrit
print(nombre_utilisateurs)
Tous les objets de Python peuvent être évalués comme des booléens.
Pour évaluer (ou convertir) un objet en tant que booléen, on utilise la classe bool :
print(bool("Bonjour"))
print(bool(1))
print(bool([]))
print(bool((1, 2, 3)))
print(bool({1: "un", 2: "deux"}))
Tous les types natifs possèdent par défaut une valeur qui est évaluée comme False, toutes les autres étant évaluées comme True.
Par exemple, tous les types natifs « vides » seront évalués comme False :
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
Pour d'autres objets, ce seront des valeurs spécifiques, comme le 0 pour les nombres entiers, 0.0 pour les nombres décimaux ou encore le mot clé None :
print(bool(0))
print(bool(0.0))
print(bool(None))
Toutes les autres valeurs de ces types retourneront True quand vous les passez à la classe bool.
Il est possible d'implémenter la méthode spéciale bool pour définir le comportement d'un objet avec la classe bool :
class Person:
def __init__(self, prenom, nom, age):
self.prenom = prenom
self.nom = nom
self.age = age
def __bool__(self):
return self.age >= 18
patrick = Person(prenom="Patrick", nom="Michaud", age=14)
john = Person(prenom="John", nom="Tremblay", age=20)
print(bool(patrick)) # False car Patrick a moins de 18 ans
print(bool(john)) # True car Patrick a plus de 18 ans