Normalerweise in Programmiersprachenor
Wannand
(Oder||
Wann&&
Ähnliche Ausdrücke wie)Ist(Punkt 2)Es bedeutet eine logische Operation.
Das heißt, der von oder
oder und
zurückgegebene Wert ist der Bool-Wert (True / False).
In Sprachen der C-Serie wird True / False manchmal durch 1/0 ersetzt, aber trotzdem geben die logischen Operationen oder und und die Werte zurück, die den logischen Werten entsprechen.
In Python geben oder
und und
jedoch nicht immer logische Werte zurück.
In Python entsprechen die Ausdrücke "x" und "y":
if not bool(x): #Wenn der logische Wert von x False ist
return x #Geben Sie x selbst anstelle von False zurück, ohne y zu sehen
else: #Wenn der logische Wert von x True ist
return y # bool(y)Nicht zurückgeben
In ähnlicher Weise ist der Ausdruck "x oder y" äquivalent zu:
if bool(x): #Wenn der logische Wert von x True ist
return x #Geben Sie x selbst anstelle von True zurück, ohne y zu sehen
else: #Wenn der logische Wert von x False ist
return y # bool(y)Nicht zurückgeben
Wenn in Python der logische Wert einer Zeichenfolge mit der Länge 0 "False" und der logische Wert einer Zeichenfolge mit der Länge 1 oder höher "True" ist, kann dies wie folgt zusammengefasst werden:
'123' or '456' -> '123' # bool('123')Ist wahr, also der Wert'123'Rückkehr
'123' or '' -> '123' # bool('123')Ist wahr, also der Wert'123'Rückkehr
'' or '456' -> '456' # bool('')Ist falsch, also Wert'456'Rückkehr
'' or '' -> '' # bool('')Ist falsch, also Wert''Rückkehr
'123' and '456' -> '456' # bool('123')Ist wahr, also Wert'456'Rückkehr
'123' and '' -> '' # bool('123')Ist wahr, also Wert''Rückkehr
'' and '456' -> '' # bool('')Ist falsch, so der Wert''Rückkehr
'' and '' -> '' # bool('')Ist falsch, so der Wert''Rückkehr
Im obigen Beispiel wird ** True / False
überhaupt nicht zurückgegeben, obwohl es das Ergebnis von or
und and
** ist.
Wenn Sie sicherstellen möchten, dass der von den binären logischen Operatoren (oder und und) in Python zurückgegebene Wert immer der logische Wert "True / False", "bool (x) oder bool (y)" oder "bool" ist Muss (x) und bool (y) sein (obwohl "bool (x oder y)", "bool (x und y)" in Ordnung ist).
Normalerweise übergeben Sie keinen anderen Wert als den logischen Wert "True / False" als "x" oder "y", aber er wird manchmal vergessen, weil "bool (x)" automatisch ausgewertet wird.
Der Grund, warum dies geschieht, ist, dass oft gesagt wird, dass die Handhabung von "Keine" bequem ist.
In Python ist der logische Wert von "None" "False" ("bool (None) -> False"), also der folgende Code
#Ich weiß nicht, ob x None enthält
if x is None:
x = '456'
# x = '456'Ich kann schreiben, wenn x None ist, aber ich persönlich mag es nicht
Kann durch ** x = x oder '456'
** ersetzt werden.
Es ist jedoch nicht ** äquivalent **. Das Verhalten, wenn eine leere Zeichenfolge "" oder eine leere Liste "[]" in "x" gespeichert wird, ist unterschiedlich.
Wenn x``''
oder[]
enthält, sind sowohl x is None
als auch bool (x )`` False
. Daher wird im Fall von Code, der "is None" verwendet, "x" nicht neu zugewiesen.
Im Fall von Code, der "x" oder "456" verwendet, wird "456" "x" zugewiesen.
Wenn "oder" keinen logischen Wert zurückgibt, haben Sie dann "x" oder "y" in "if" verwendet? Nein, es hat unweigerlich funktioniert, nicht aus Versehen. In Python wird der Wahrheitswert des bedingten Ausdrucks "if" ohne Erlaubnis bestimmt. Mit anderen Worten, dasselbe wie "wenn bool (x oder y):" wird ohne Erlaubnis durchgeführt.
Recommended Posts