Heim >Backend-Entwicklung >Python-Tutorial >Warum wird „a == x oder y oder z' in Python immer als wahr ausgewertet?
Der Irrtum „a == x oder y oder z“
Beim Versuch, eine Variable mit mehreren Werten zu vergleichen, ist es verlockend, ihn zu verwenden Logische Operatoren von Python, wie in:
if a == x or y or z: # Incorrect
Dieser Ausdruck wird jedoch immer als True ausgewertet, unabhängig vom Wert von A. Dies liegt daran, dass sich der „oder“-Operator in diesem Kontext nicht wie erwartet verhält.
Funktionsweise des „oder“-Operators
Pythons „oder“-Operator (|) wird als True ausgewertet, wenn einer seiner Operanden True ist. Da also im obigen Ausdruck eines von x, y oder z immer wahr ist (ein nicht leerer Wert ist in Python wahr), wird der Ausdruck unabhängig vom Wert von a als wahr ausgewertet.
Korrekte Möglichkeiten zum Vergleichen mit mehreren Werten
Um eine Variable korrekt mit mehreren Werten zu vergleichen, gibt es mehrere Optionen:
Verwenden Sie explizite „ODER“-Operatoren, um jeden Wert einzeln zu vergleichen:
if a == x or a == y or a == z: # Correct
Erstellen Sie einen Satz oder eine Liste gültiger Werte und verwenden Sie den „in“-Operator, um die Mitgliedschaft zu überprüfen:
if a in {"Kevin", "Jon", "Inbar"}: # Correct
Verwenden Sie einen Generatorausdruck mit „any()“, um jeden explizit zu überprüfen Wert:
if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]): # Correct
Leistung berücksichtigen
Aus Gründen der Leistung ist die Verwendung von Sätzen oder Listen mit dem „in“-Operator normalerweise die schnellste Option. Generatorausdrücke, die „any()“ verwenden, sind am ausführlichsten und langsamsten.
Beispielverwendung
Zugriff nur autorisierten Benutzern gewähren:
authorized_names = {"Kevin", "Jon", "Inbar"} name = input("Please enter your name: ") if name in authorized_names: print("Access granted.") else: print("Access denied.")
Das obige ist der detaillierte Inhalt vonWarum wird „a == x oder y oder z' in Python immer als wahr ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!