Habituellement dans les langages de programmationor
Quandand
(Ou||
Quand&&
Expressions similaires telles que)Est(Point 2)Cela signifie une opération logique.
Autrement dit, la valeur renvoyée par ʻor ou ʻand
est une valeur booléenne (True / False).
Dans les langages de la série C, True / False est parfois remplacé par 1/0, mais de toute façon, les opérations logiques ou et et renvoient les valeurs correspondant aux valeurs logiques.
Cependant, en Python, «ou» et «et» ne renvoient pas toujours des valeurs logiques.
En Python, les expressions «x et y» sont équivalentes à:
if not bool(x): #Si la valeur logique de x est False
return x #Renvoie x lui-même au lieu de False sans voir y
else: #Si la valeur logique de x est True
return y # bool(y)Ne pas se retourner
De même, l'expression «x ou y» équivaut à:
if bool(x): #Si la valeur logique de x est True
return x #Renvoie x lui-même au lieu de True sans voir y
else: #Si la valeur logique de x est False
return y # bool(y)Ne pas se retourner
En Python, en notant que la valeur logique d'une chaîne de longueur 0 est «False» et que la valeur logique d'une chaîne de longueur 1 ou supérieure est «True», elle peut être résumée comme suit:
'123' or '456' -> '123' # bool('123')Est vrai, donc la lvalue'123'Revenir
'123' or '' -> '123' # bool('123')Est vrai, donc la lvalue'123'Revenir
'' or '456' -> '456' # bool('')Est faux, donc rvalue'456'Revenir
'' or '' -> '' # bool('')Est faux, donc rvalue''Revenir
'123' and '456' -> '456' # bool('123')Est vrai, donc rvalue'456'Revenir
'123' and '' -> '' # bool('123')Est vrai, donc rvalue''Revenir
'' and '456' -> '' # bool('')Est False, donc la rvalue''Revenir
'' and '' -> '' # bool('')Est False, donc la rvalue''Revenir
Dans l'exemple ci-dessus, ** True / False
n'est pas du tout retourné, même s'il est le résultat de ʻor et ʻand
**.
Si vous voulez vous assurer que la valeur retournée par les opérateurs logiques binaires (ou et et) en Python est toujours la valeur logique True / False
, alors bool (x) ou bool (y) ʻor
bool Doit être (x) et bool (y) (bien que
bool (x ou y),
bool (x and y) ʻ is fine).
Normalement, vous ne passez aucune valeur autre que la valeur logique «Vrai / Faux» comme «x» ou «y», mais cela est parfois oublié car «bool (x)» est évalué automatiquement.
La raison pour laquelle cela se produit est que l'on dit souvent que la gestion de "Aucun" est pratique.
En Python, la valeur logique de None
est False
( bool (None) -> False
), donc le code suivant
#Je ne sais pas si x contient None
if x is None:
x = '456'
# x = '456'Je peux écrire si x vaut None, mais personnellement je n'aime pas ça
Peut être remplacé par ** x = x ou '456'
**.
Cependant, ce n'est pas ** équivalent **. Le comportement lorsqu'une chaîne de caractères vide `` '' ou une liste vide
[] est stockée dans
x est différent. Si "x" contient "" "ou" [] "," x est Aucun "et" bool (x) "sont" Faux ". Par conséquent, dans le cas d'un code utilisant ʻis None
, x
n'est pas réaffecté,
Dans le cas d'un code utilisant «x ou« 456 »», «456» est réaffecté à «x».
Si ʻoune renvoie pas de valeur logique, est-ce que l'utilisation de
x ou y dans ʻif
a réussi?
Non, cela fonctionnait inévitablement, pas par accident.
En Python, la valeur de vérité de l'expression conditionnelle de ʻifest déterminée sans autorisation. En d'autres termes, la même chose que ʻif bool (x ou y):
se fait sans permission.
Recommended Posts