Ketika saya melihat jawaban untuk pertanyaan ini , saya menemukan saya tidak mengerti jawaban saya sendiri.
Saya tidak begitu mengerti bagaimana ini diurai. Mengapa contoh kedua mengembalikan False?
>>> 1 in [1,0] # This is expected
True
>>> 1 in [1,0] == True # This is strange
False
>>> (1 in [1,0]) == True # This is what I wanted it to be
True
>>> 1 in ([1,0] == True) # But it's not just a precedence issue!
# It did not raise an exception on the second example.
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
Terima kasih atas bantuannya. Saya pikir saya harus kehilangan sesuatu yang sangat jelas.
Saya pikir ini agak berbeda dengan duplikat yang ditautkan:
Mengapa ekspresi 0 <0 == 0 mengembalikan False in Python? .
Kedua pertanyaan tersebut berkaitan dengan pemahaman manusia tentang ekspresi. Tampaknya ada dua cara (dalam pikiranku) untuk mengevaluasi ekspresi. Tentu saja tidak ada yang benar, tetapi dalam contoh saya, interpretasi terakhir tidak mungkin.
Melihat 0 < 0 == 0
Anda dapat membayangkan setiap bagian dievaluasi dan masuk akal sebagai ungkapan:
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Jadi tautan menjawab mengapa ini mengevaluasi False
:
>>> 0 < 0 == 0
False
Tetapi dengan contoh saya 1 in ([1,0] == True)
tidak masuk akal sebagai ungkapan, jadi alih-alih ada dua kemungkinan penafsiran, hanya satu yang tampaknya mungkin:
>>> (1 in [1,0]) == True
==
ikatan lebih ketat daripadain
, jadi[1,0] == True
dievaluasi dulu, lalu hasilnya diumpankan ke1 in other_result
.