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.
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
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, é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 'table' or False
est X
Lorsque True
est affecté à A
, lorsque 'table'
est à X
, <. 🎜> sera attribué à Flase
; A
False
semble bien à première vue, mais il y a un écueil dans cette façon d'écrire Regardons ce code
True and 0 or 1
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 1
and...or
Écriture correcte
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>
# <为真时的结果> if <判定条件> else <为假时的结果>0 if True else 1
, 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!