Quelle valeur de vérité les objets évaluent-ils en Python?Évaluation d'expressions booléennes en Python
Questions connexes
- Boolean Value of Objects in Python: Discussion sur redéfinissant la façon dont il est évalué
Quelle valeur de vérité les objets évaluent-ils en Python?Évaluation d'expressions booléennes en Python
Questions connexes
Tout objet peut être testé pour la valeur de vérité , pour une utilisation dans un cas ou en état ou opérande des opérations booléennes ci-dessous. Les valeurs suivantes sont considérés comme faux:
Aucun
Faux
zéro de tout type numérique, par exemple,
0
,0L
,0.0
,0j
.toute séquence vide, par exemple,
''
,()
,[]
.tout mappage vide, par exemple,
{}
.des instances de classes définies par l'utilisateur, si la classe définit une méthode
__nonzero__()
ou__len__()
, lorsque cette méthode renvoie le nombre entier zéro ou une valeur boolFalse
.Toutes les autres valeurs sont considérés comme de véritables - donc des objets de plusieurs types sont toujours vraies. Les opérations et les fonctions intégrées qui ont un résultat booléen renvoient toujours 0 ou
False
pour false et 1 ouTrue
pour true, sauf indication contraire. (Exception importante: les opérations booléennes "ou" et "et" retournent toujours un de leurs opérandes.)
https://docs.python.org/2/library/stdtypes.html#truth-value-testing
Et comme mentionné, vous pouvez remplacer avec des objets personnalisés en modifiant non nulle.
Mise à jour: Suppression de tous les infomation en double avec le poste
de Meder Pour les objets personnalisés en Python < 3,0 __nonzero__
pour changer la façon dont il est évalué éd. En Python 3.0 c'est __bool__
(Reference par e-satis)
Il est important de comprendre ce que l'on entend par évaluer. L'une des significations est quand un objet est explicitement converti en booléen ou implicitement jeté par son emplacement (dans une boucle if ou while).
Une autre est == evalutation. 1 == Vrai, 0 == Faux, rien d'autre n'est égal via ==.
>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False
Enfin, pour is, seuls True ou False sont eux-mêmes.
Les objets personnalisés peuvent renvoyer True/False pour une évaluation booléenne en implémentant __nonzero__ – dcrosta
Il suffit de noter que dans Python 3.0, '__bool__' doit être remplacé à la place – Casebash
Les documents que vous citez sont imprécis (ou incomplets); Par exemple, les ensembles ne sont ni des séquences ni des mappages, mais lorsqu'ils sont vides, ils sont également faux. Je réduirais ces deux lignes (couvrant également le cas des ensembles) à "n'importe quel ** conteneur ** vide". –