1

AFAIK:Python: Pourquoi False ou 'name' retourne 'name' et non False?

and, or sont des opérateurs booléens et toute expression booléenne doit retourner un booléen.

Alors, pourquoi cela se produit:

  • False or 'name' retours 'name' et non True
  • True and '' retours '' et non False

S'il vous plaît expliquer, comment ne gère python expressions booléennes?

+0

Downvoter, s'il vous plaît au moins part ce qui aurait pu être amélioré? –

Répondre

8

Non, en python, les opérations or et and court-circuitent et retournent le dernier élément évalué.

Voir Boolean operations:

L'expression x and y premier evalue x; si x est faux, sa valeur est retournée; sinon, y est évalué et la valeur résultante est renvoyée. L'expression x or y évalue d'abord x; si x est vrai, sa valeur est retournée; sinon, y est évalué et la valeur résultante est renvoyée.

Si vous doit avoir une valeur booléenne, utilisez bool():

>>> bool(False or 'name') 
True 
+0

Mais quand je l'ai essayé en javascript et ruby, ça a fonctionné comme en python. Mais quand j'ai essayé le même court-circuit en C, il a renvoyé 1 et 0, c'est-à-dire des résultats booléens. Puisque nous utilisons cpython, il devrait être identique à C, mais ce n'est pas le cas. Pourquoi? –

+0

Ceci est python, pas C. C'est la même chose dans Jython, PyPy et IronPython. Le langage spécifie comment cela fonctionne et l'effet secondaire est utilisé dans de nombreux endroits; par exemple. 'somevariable = someothervariable ou fallback'. –

+0

Je ne voulais pas dire que c'est un combat entre les langues, je veux dire que 'et' et 'ou' sont des opérateurs logiques, donc ils devraient renvoyer un résultat booléen, par défaut. –

Questions connexes