2015-12-08 21 views
11

Mój starszy zademonstrował to i chciałbym się dowiedzieć, czy jest to usterka, czy też jest jakiś precedens i powiązanie z operatorem, które to usprawiedliwia.Dlaczego Fałsz == Fałsz w [Fałsz] zwraca True?

>>> False==False in [False] 
True 
+1

Może to być przypadek znanego w Pythonie mechanizmu porównywania operatora porównania (tak, aby było to to samo co 'Fałsz == Fałsz i Fałsz w [Fałsz]'). Nie jestem tego pewien ... – hlt

+0

Bez wiedzy, ale z odpowiedzi tutaj: http://stackoverflow.com/questions/34163067/python-why-does-false-false-in-false-returns-true # 34163067 - może to wynikać ze sposobu, w jaki jest obsługiwany. '(False == False) w [False]' –

+0

podstawianie 'Fałszywa' z' 1' czyni o wiele bardziej wyraźnym – letsc

Odpowiedz

20

Łańcuch Pythona comparison operators.

False == False in [False] 

jest oceniany jako

(False == False) and (False in [False]) 

środkowy termin uczestniczy w obu porównań.

Wolałbym, aby in nie łączyć z innymi operatorami porównania.

+1

Czy jest jedynym powodem, dla którego operatorzy mogą dokonywać wyrażeń takich jak 'x

+1

Nie wiem o przypadku użycia do łączenia "w" z innymi operatorami porównania, który tworzy wyraźny kod. –

+1

Steven, możesz nie próbować strzelać sobie w stopy, po prostu nie robiąc takich głupich rzeczy. Nikt nie zmusza Cię do pisania nieosiągalnego kodu :-) –

Powiązane problemy