Maison  >  Article  >  développement back-end  >  Explication détaillée des valeurs de retour de et et ou en python

Explication détaillée des valeurs de retour de et et ou en python

巴扎黑
巴扎黑original
2017-08-21 14:59:572583parcourir

En Python, et et ou exécutent une logique booléenne, comme on peut s'y attendre, mais ils ne renvoient pas de valeur booléenne à la place, ils renvoient l'une des valeurs avec lesquelles ils comparent réellement.

1. et :

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'

évalue la valeur de l'expression de gauche à droite dans un contexte booléen. Si toutes les valeurs du contexte booléen sont vraies, alors et renvoie le. dernière valeur.

Si une valeur dans le contexte booléen est fausse, alors et renvoie la première valeur fausse

2 ou :

>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'

Lors de l'utilisation de ou, dans les valeurs booléennes ​. ​sont évalués de gauche à droite dans le contexte, tout comme et. Si une valeur est vraie, ou renvoie cette valeur immédiatement

Si toutes les valeurs sont fausses, ou renvoie la dernière valeur fausse

Notez que or effectuera toujours une évaluation d'expression dans un contexte booléen jusqu'à ce que la première vraie valeur est trouvée, les valeurs de comparaison restantes seront ignorées

3. et-ou :

et-ou combine les deux syntaxes précédentes et peut être raisonnée.

>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'
>>>

Cette syntaxe ressemble à l'expression bool ? a : b en langage C. L'expression entière est évaluée de gauche à droite, donc l'expression et est évaluée en premier. 1 et « premier » sont évalués à « premier », puis « premier » ou « deuxième » sont évalués à « premier ».

0 et « premier » sont évalués à Faux, puis 0 ou « deuxième » sont évalués à « deuxième ».

et-ou est principalement utilisé pour imiter l'opérateur ternaire bool?a:b, c'est-à-dire que lorsque l'expression bool est vraie, alors a est pris, sinon b est pris.

L'astuce and-or, l'expression bool et a ou b, lorsqu'a est évaluée à false dans un contexte booléen, ne fonctionne pas comme l'expression bool a : b du langage C ?

4. Utilisez et-ou en toute sécurité

>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0]
''
>>>

Puisque [a] est une liste non vide, elle ne sera jamais fausse. Même si a vaut 0 ou '' ou une autre valeur fausse, la liste [a] est vraie car elle comporte un élément.

Un programmeur responsable doit encapsuler la technique et/ou dans une fonction :

def choose(bool,a,b):
    return (bool and [a] or [b])[0]
print  choose(1,'','second')    #''

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn