True en Python : la valeur vraie d'un booléen

True est la valeur vraie du type booléen en Python : un mot-clé à majuscule, qui compte pour 1 dans un calcul et gouverne toute condition.
5 min de lecture
Believemy logo

Définition

Un programme passe son temps à décider : afficher tel message, exécuter telle étape, accorder tel accès. Pour cela, il lui faut un moyen d'écrire noir sur blanc que la réponse est oui. C'est le rôle de True, l'une des deux valeurs booléennes de Python, l'autre étant False : elle représente ce qui est vrai, qu'il s'agisse d'une comparaison qui se vérifie ou d'un accès accordé.

True s'écrit avec une majuscule et sans guillemets : c'est un mot-clé du langage, pas une variable à définir soi-même. Comme None, il désigne un objet unique en mémoire.

PYTHON
# True est la réponse d'une comparaison qui se vérifie
est_majeur = True

if est_majeur:
    print("Accès autorisé")

print(3 > 2)
# True

Chaque comparaison écrite en Python renvoie l'une de ces deux valeurs. Le type qui les porte s'appelle bool, produit par une expression comme 3 > 2.


Vrai ne veut pas toujours dire écrit True

Une bonne partie du code ne compare jamais explicitement à True : on écrit if ma_liste: plutôt que if len(ma_liste) > 0:, et cela fonctionne bien que ma_liste ne soit pas un booléen. C'est le rôle d'une condition : elle accepte n'importe quelle valeur, et Python la ramène à vrai ou à faux selon une règle courte.

Il suffit de retenir une chose : ce qui est vide ou nul est faux, tout le reste est vrai. Voici les cas les plus fréquents.

ValeurTraitée comme
True, 1, -7Vraie
"texte", [1, 2]Vraie
False, 0, 0.0Fausse
"", [], {}Fausse
NoneFausse

La nuance apparaît dès qu'on compare au lieu de tester. [1, 2] == True répond faux, alors que la même liste déclenche bien le bloc d'un if, traitée comme vraie. D'où la préférence pour le test direct.


Compter ce qui est vrai, sans boucle ni compteur

Imaginez une liste de notes et le besoin de savoir combien dépassent la moyenne. La méthode explicite ouvrirait une boucle et un compteur. Python offre un raccourci, parce que True vaut 1 dans un calcul et False vaut 0 : le type booléen dérive du type int, un entier limité à deux valeurs.

PYTHON
notes = [12, 8, 15, 4, 17]

# chaque comparaison vaut True (1) ou False (0) ; sum() les additionne
reussites = sum(note >= 10 for note in notes)

print(reussites)
# 3

Chaque comparaison produit un booléen, et sum() l'additionne comme un nombre. Même mécanique pour True + True, qui vaut 2 : un booléen reste un entier déguisé, ce qui permet de compter des occurrences sans jamais écrire de boucle.


while True : quand on ne sait pas d'avance quand s'arrêter

Certaines boucles connaissent leur nombre de tours avant de démarrer, comme parcourir une liste de cinq éléments. D'autres non : attendre une saisie au clavier, faire tourner un menu, garder un programme en veille. Impossible, alors, d'écrire une condition d'arrêt à l'avance. Placer True comme condition d'un while répond à ce besoin : la boucle tourne sans limite fixée, et c'est le code à l'intérieur qui décide de la stopper avec un break.

PYTHON
while True:
    reponse = input("Votre choix : ")
    if reponse == "q":
        break  # seule sortie de la boucle
    print("Reçu :", reponse)

Pas besoin de deviner combien de fois l'utilisateur va répondre : la boucle continue jusqu'au "q", puis s'arrête.

Attention

Une boucle while True sans break, sans return et sans exception ne s'arrête jamais. Le programme se fige, et il faut l'interrompre à la main : c'est l'erreur la plus fréquente sur ce genre de boucle.


Les pièges qui viennent d'un autre langage

La plupart des erreurs autour de True ne viennent pas d'une mauvaise compréhension de Python, mais d'une habitude prise ailleurs.

La première vient du JavaScript ou du JSON, où le booléen vrai s'écrit en minuscules. En Python, true sans majuscule n'existe pas et lève aussitôt une NameError. Le réflexe à prendre est simple : une majuscule en début de mot, comme pour False et None.

La deuxième concerne la comparaison explicite. if est_actif == True: fonctionne, mais if est_actif: dit la même chose en plus court, et reste juste même quand est_actif vaut une valeur vraie sans être exactement True, comme une liste remplie.

La troisième est le test d'identité avec is, plus strict que == True : il vérifie qu'on tient exactement le même objet, pas seulement une valeur équivalente. 1 is True répond donc faux, alors que 1 == True répond vrai. True existe en un seul exemplaire en mémoire, comme None, ce qui rend ce test fiable ; il ne se justifie que pour distinguer un vrai booléen d'une valeur simplement égale.


Questions fréquentes

Question

Pourquoi True prend-il une majuscule en Python ?

Parce que c'est un mot-clé du langage, aligné sur False et None qui s'écrivent eux aussi avec une capitale. La minuscule appartient à JavaScript et au format JSON, pas à Python.

Question

Faut-il écrire if actif == True ?

Non, if actif: suffit et se lit mieux. La comparaison n'apporte aucune sécurité, elle ajoute une occasion de taper un seul signe égal, et elle écarte les valeurs vraies qui ne sont pas le booléen lui-même.

Question

True et 1 sont-ils interchangeables ?

Dans un calcul, oui, puisque le booléen dérive de l'entier. Dans un dictionnaire, ils vont plus loin et entrent en collision : {1: "a", True: "b"} ne contient qu'une seule clé, dont la valeur est celle écrite en dernier.

Termes connexes

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.