Introduction à l'utilisation de la calculatrice ternaire Python et de la méthode logique de court-circuit

高洛峰
Libérer: 2017-03-20 10:16:04
original
1555 Les gens l'ont consulté

Aujourd'hui, j'ai vu une telle façon d'écrire en regardant le code des autres. J'ai senti que c'était un piège facile dans lequel tomber. Après l'avoir compris, j'ai écrit un mémo.

Court. -logique de circuit

Lors de l'exécution d'opérations logiques en Python, une sorte de règle d'opération appelée logique de court-circuit est utilisée par défaut. Vous pouvez le voir en regardant. le code

print True and 1
# 1
print True or 1
# True
print False and 1
# False
print False or 1
# 1
Copier après la connexion

directement ci-dessous. Bien que 1 volonté soit calculée comme une valeur booléenne, le résultat du calcul de l'ensemble de l' expression n'est pas nécessairement une valeur booléenne, mais varie en fonction de la valeur booléenne. expression.Les différents résultats des expressions ci-dessus sont une logique de court-circuit.UtilisationPour parler franchement, une fois que Python peut déterminer si l'expression entière est vraie ou fausse, les calculs suivants ne seront pas effectués. et les expressions suivantes sont ignorées.

Par exemple, True or 1 Le résultat est True car quelle que soit la valeur qui suit or, le résultat de la formule entière doit être vrai, donc quand Python voit True et or, il ignore le 1 suivant, 1 Il est court-circuité, et True est renvoyé ; il en va de même pour False and 1 Quand vous voyez False puis and, peu importe ce qui suit. , le résultat de la formule entière doit être False, donc 1 est court-circuité, Retour False.

En conséquence, pourquoi False or 1 renvoie 1 est parce que False et or ne peuvent pas déterminer le résultat de la formule. Que la formule entière soit vraie ou fausse est déterminée par or est déterminé par la valeur suivante, donc Python doit lire l'expression entière, il renvoie donc 1.

Après avoir compris quoi la logique de court-circuit est, jetons un coup d'oeil à l'opérateur ternaire

Opérateur ternaire

Opérateur ternaire, également appelé opérateur ternaire Étudiants. familier avec Java sait peut-être que sa forme est comme cecib?x:y, pour cette expression, si la condition b est True, alors le résultat de l'expression est x, si b est False, alors le résultat de l'expression est y. C'est une manière d'écrire très pratique, beaucoup plus simple que l'instruction if

Cependant, il n'y avait pas d'opérateur ternaire similaire à la manière. il a été écrit aux débuts de Python, il existait donc un moyen d'utiliser la logique de court-circuit, en utilisant and et or pour simuler l'écriture de l'opérateur ternaire. Regardons le code ci-dessous : <🎜. >

A = X and &#39;table&#39; or False
Copier après la connexion
Ce code utilise une logique de court-circuit pour simuler l'opérateur ternaire Lorsque

est X Lorsque True est affecté à A, lorsque &#39;table&#39; est à X, <. 🎜> sera attribué à Flase; AFalse semble bien à première vue, mais il y a un écueil dans cette façon d'écrire Regardons ce code

. utilisez la façon dont nous venons de l'écrire comme opérateur ternaire, alors l'instruction conditionnelle est
True and 0 or 1
Copier après la connexion
, et l'expression devrait renvoyer

est le résultat que nous attendons, mais en fait cette expression retournera True car la valeur de 0 est 1, la valeur de l'expression entière est déterminée par la valeur après True and 0, donc Python Il jugera la valeur suivante, ce qui entraînera le retour de True, c'est pourquoi or est un piège par écrit 1and...orÉcriture correcte

Si vous souhaitez utiliser l'arithmétique ternaire dans le symbole Python, vous pouvez utiliser if...<a href="http://www.php. cn/wiki/111.html" target="_blank">else</h3> pour plus de détails. Le code

if...<a href="http://www.php.cn/wiki/111.html" target="_blank">else</a>

est écrit de la manière
# <为真时的结果> if <判定条件> else <为假时的结果>0 if True else 1
Copier après la connexion
, et le résultat sera C'est la même chose que ce à quoi nous nous attendons. Lorsque la condition est

, la valeur précédente est renvoyée, et lorsque la condition est if...else, la valeur suivante est renvoyée. Il n'y aura pas de pièges lors de l'écriture. l'ordre des conditions et des valeurs de retour est différent de l'opérateur ternaire en Java. Ne vous trompez pas True.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal