Je viens de savoir qu'il existe des valeurs Truthy et Falsy en python qui sont différentes des valeurs normales True
et False
?
Quelqu'un peut-il expliquer en profondeur ce que sont les valeurs véridiques et fausses ?
Où dois-je les utiliser?
Quelle est la différence entre la vérité et les True
valeurs et la fausse et les False
valeurs?
bool(value)
aboutitTrue
, alorsvalue
c'est la vérité .__nonzero__
et__bool__
Réponses:
Comme les commentaires le décrivent, il se réfère simplement aux valeurs évaluées à True ou False.
Par exemple, pour voir si une liste n'est pas vide, au lieu de vérifier comme ceci:
Vous pouvez simplement faire ceci:
En effet, certaines valeurs, telles que les listes vides, sont considérées comme False lorsqu'elles sont évaluées pour une valeur booléenne. Les listes non vides ont la valeur True.
De même pour l'entier 0, la chaîne vide "", et ainsi de suite, pour False, et les entiers non nuls, les chaînes non vides, et ainsi de suite, pour True.
L'idée de termes comme «véridique» et «faux» se réfère simplement 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ée comme "falsifiée", et une liste non vide (par exemple,[1]
) est considérée comme "véridique".Voir également cette section de la documentation .
la source
if my_list
signifie "si ma_liste n'est pas vide", etif not my_list
signifie "si ma_liste est vide".if a:
ce que signifie ce type de conditions? est-ce que cela signifie si a est vrai ou si a est faux? ou cela signifie si a est vrai ou si a est faux?if []:
n'exécuterait jamais.Toutes les valeurs sont considérées comme "véridiques", à l'exception des suivantes, qui sont "fausses":
None
False
0
0.0
0j
Decimal(0)
Fraction(0, 1)
[]
- un videlist
{}
- un videdict
()
- un videtuple
''
- un videstr
b''
- un videbytes
set()
- un videset
range
, commerange(0)
obj.__bool__()
RetourFalse
obj.__len__()
Retour0
Une valeur "véridique" satisfera le contrôle effectué par les instructions
if
ouwhile
. Nous utilisons «véridique» et «faux» pour différencier lesbool
valeursTrue
etFalse
.Test de valeur de vérité
la source
__bool__
abord, alors__len__
. Si ni l'un ni l'autre n'est défini, toutes les instances sont considérées comme "vraies". Ceci est discuté dans la documentation de laobject.__bool__
méthodetimedelta(0)
c'est comme zéro. Cela a été évoqué quand il a été découvert que les valeurs de temps représentant minuit étaient fausses, ce qui a finalement été corrigé: lwn.net/Articles/590299Les valeurs de vérité font référence aux objets utilisés dans un contexte booléen et pas tant à la valeur booléenne qui renvoie true ou false.
la source
Python détermine la véracité en appliquant
bool()
au type, qui renvoieTrue
ouFalse
qui est utilisé dans une expression commeif
ouwhile
.Voici un exemple pour une classe personnalisée
Vector2d
et son instance retournantFalse
lorsque la magnitude (longueur d'un vecteur) est 0, sinonTrue
.Remarque: si nous ne l'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îtrise de Python, programmation claire, concise et efficace"
la source
Où devriez-vous utiliser les valeurs Truthy ou Falsy? Ce sont du sucre syntaxique , vous pouvez donc toujours les éviter, mais leur utilisation peut rendre votre code plus lisible et vous rendre plus efficace. De plus, vous les trouverez dans de nombreux exemples de code, que ce soit en python ou non, car cela est considéré comme une bonne pratique.
Comme mentionné dans les autres réponses, vous pouvez les utiliser dans les tests if et les boucles while. Voici deux autres exemples en python 3 avec des valeurs par défaut combinées avec
or
,s
étant une variable de chaîne. Vous vous étendrez également à des situations similaires.Sans vérité
avec la vérité c'est plus concis:
En python 3.8, nous pouvons tirer parti de l'expression d'affectation
:=
sans vérité
avec la vérité c'est plus court aussi
ou même plus court,
Sans l'expression d'affectation, on peut faire
mais pas plus court. Certaines personnes trouvent la
s =...
ligne insatisfaisante car elle correspond ànéanmoins, vous pouvez adhérer à ce style de codage si vous vous sentez à l'aise avec lui.
la source
Falsy signifie quelque chose de vide comme une liste vide, un tuple, comme tout type de données ayant des valeurs vides ou None. Vérité signifie: sauf si Vérité
la source