Question 'True' et 'False' en Python


J'ai essayé d'exécuter ce morceau de code:

path = '/bla/bla/bla'

if path is True:
    print "True"
else:
    print "False"

Et il imprime Faux. Je pensais que Python traite tout ce qui a de la valeur comme Vrai. Pourquoi cela arrive-t-il?


45
2018-02-25 16:23


origine


Réponses:


De http://docs.python.org/reference/expressions.html#boolean-operations:

Dans le contexte des opérations booléennes et lorsque des expressions sont utilisées par des instructions de flux de contrôle, les valeurs suivantes sont interprétées comme fausses: Faux, Aucun, zéro numérique de tous types et chaînes et conteneurs vides (chaînes, n-uplets, listes, dictionnaires inclus) , ensembles et frozensets). Toutes les autres valeurs sont interprétées comme étant vraies.

La phrase clé ici que je pense que vous êtes malentendu est "interprétée comme fausse" ou "interprétée comme vraie". Cela ne signifie pas que l'une de ces valeurs est identique à True ou False, ou même à True ou False.

L'expression '/bla/bla/bla' sera traité comme vrai où une expression booléenne est attendue (comme dans une if déclaration), mais les expressions '/bla/bla/bla' is True et '/bla/bla/bla' == True évaluera à Faux pour les raisons dans la réponse d'Ignacio.


61
2018-02-25 16:53



is compare l'identité. Une chaîne ne sera jamais identique à une chaîne non.

== est l'égalité. Mais une chaîne ne sera jamais égale à True ou False.

Vous ne voulez ni l'un ni l'autre.

path = '/bla/bla/bla'

if path:
    print "True"
else:
    print "False"

92
2018-02-25 16:25