169 votes

Qu'est-ce que Truthy et Falsy en python ? En quoi est-ce différent de True et False ?

Je viens juste d'apprendre qu'il y a Truthy y Falsy en python qui sont différentes des valeurs normales. True y False ?

Quelqu'un peut-il expliquer en profondeur ce que véridique y falsy valeurs sont ?

Où dois-je les utiliser ?

Quelle est la différence entre véridique y True et falsy y False valeurs ?

259voto

Patrick Haugh Points 27866

Toutes les valeurs sont considérées comme "vraies", sauf les suivantes, qui sont "fausses" :

  • None
  • False
  • 0
  • 0.0
  • 0j
  • Decimal(0)
  • Fraction(0, 1)
  • [] - un vide list
  • {} - un vide dict
  • () - un vide tuple
  • '' - un vide str
  • b'' - un vide bytes
  • set() - un vide set
  • un vide range comme range(0)
  • les objets pour lesquels
    • obj.__bool__() renvoie à False
    • obj.__len__() renvoie à 0

Une valeur "véridique" satisfera la vérification effectuée par if o while déclarations. Nous utilisons "truthy" et "falsy" pour faire la différence avec les bool valeurs True y False .

Test de la valeur de la vérité

97voto

B. Eckles Points 991

Comme les commentaires l'ont décrit, il s'agit simplement de valeurs qui sont évaluées à Vrai ou Faux.

Par exemple, pour voir si une liste n'est pas vide, au lieu de vérifier comme ceci :

if len(my_list) != 0:
   print "Not empty!"

Vous pouvez simplement faire cela :

if my_list:
   print "Not empty!"

En effet, certaines valeurs, telles que les listes vides, sont considérées comme fausses lorsqu'elles sont évaluées pour une valeur booléenne. Les listes non vides sont considérées comme vraies.

De même pour l'entier 0, la chaîne vide "", et ainsi de suite, pour Faux, et les entiers non nuls, les chaînes non vides, et ainsi de suite, pour Vrai.

L'idée de termes comme "vrai" et "faux" fait simplement référence aux valeurs qui sont considérées comme vraies dans des cas comme ceux décrits ci-dessus, et celles qui sont considérées comme fausses.

Par exemple, une liste vide ( [] ) est considéré comme "falsy", et une liste non vide (par exemple, [1] ) est considéré comme "véridique".

Voir aussi cette section de la documentation .

5voto

user1767754 Points 460

Python détermine la véracité en appliquant bool() au type, qui renvoie True o False qui est utilisé dans une expression comme if o while .

Voici un exemple pour une classe personnalisée Vector2d et son instance renvoie False quand la magnitude (longueur d'un vecteur) est 0, sinon True .

import math
class Vector2d(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

a = Vector2d(0,0)
print(bool(a))        #False
b = Vector2d(10,0)    
print(bool(b))        #True

Nota: Si nous n'avions pas défini __bool__ il renverrait toujours True, car les instances d'une classe définie par l'utilisateur sont considérées comme véridiques par défaut.

Exemple tiré du livre : "Maîtriser Python, une programmation claire, concise et efficace"

5voto

adi1ya Points 13

Les valeurs vraies font référence aux objets utilisés dans un contexte booléen et non à la valeur booléenne qui renvoie vrai ou faux :

>>> bool([])
False
>>> bool([1])
True
>>> bool('')
False
>>> bool('hello')
True

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X