Heim > Artikel > Backend-Entwicklung > Warum wird \'1\' in \'11\' == True in Python zu False ausgewertet?
Python: Verwechslung der Operatorpriorität mit „in“- und Vergleichsoperatoren
In Python kann der Vergleich von Sequenzzugehörigkeit und Gleichheit zu unerwarteten Ergebnissen führen auf die gleiche Priorität der 'in'- und Vergleichsoperatoren. Wenn diese Operatoren in einem Ausdruck ohne Klammern vorkommen, werden sie von links nach rechts ausgewertet.
Zum Beispiel:
'1' in '11' == True # Evaluates to False
Dieser Ausdruck wird interpretiert als:
('1' in '11') and ('11' == True)
Da „11“ nicht gleich „True“ ist, wird der gesamte Ausdruck als „False“ ausgewertet. Um das beabsichtigte Ergebnis (True) zu erreichen, sind Klammern erforderlich:
'1' in '11' == True # Evaluates to True
Wenn jedoch Klammern um den entgegengesetzten Operanden gesetzt werden:
'1' in ('11' == True) # TypeError
ein TypeError wird ausgelöst, weil „11“ ist gleich True, was ein boolescher Wert ist und daher nicht iterierbar ist. Um diesen Fehler zu vermeiden, stellen Sie sicher, dass der „in“-Operator mit einem iterierbaren Objekt verwendet wird.
Das Verständnis der Operatorpriorität und -verkettung in Python ist entscheidend, um Code zu schreiben, der sich wie erwartet verhält. Operatoren mit gleicher Priorität werden von links nach rechts ausgewertet, und durch die Verkettung können Sie mehrere Auswertungen in einer einzigen Zeile durchführen. Durch sorgfältiges Berücksichtigen der Operatorpriorität und -verkettung können Sie unerwartete Ergebnisse vermeiden und effizienteren Code schreiben.
Das obige ist der detaillierte Inhalt vonWarum wird \'1\' in \'11\' == True in Python zu False ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!