Cevaplara bakarken Bu sorunun kendi cevabımı anlamadığımı fark ettim.
Bunun nasıl ayrıştırıldığını gerçekten anlamıyorum. İkinci örnek neden False döndürüyor?
>>> 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
Herhangi bir yardım için teşekkürler. Sanırım gerçekten bariz bir şeyi kaçırmam gerekiyor.
Bu bağlantılı yinelenenden farklı olduğunu düşünüyorum:
0 <0 == 0 ifadesi Python'da neden False döndürüyor?.
Her iki soru da insanın ifadeyi kavramasıyla ilgilidir. İfadeyi değerlendirmenin (aklıma göre) iki yolu var gibi görünüyordu. Tabii ki ikisi de doğru değildi, ama benim örneğimde, son yorum imkansız.
0 < 0 == 0
Sana bakmak her yarının değerlendirildiğini ve bir ifade olarak anlamlı olduğunu hayal edebiliyordu:
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Bağlantı, bunun neden değerlendirildiğini cevaplıyor False
:
>>> 0 < 0 == 0
False
Ancak benim örneğim 1 in ([1,0] == True)
bir ifade olarak anlam ifade etmiyor, bu yüzden iki (kuşkusuz yanlış) olası yorum yerine, sadece biri mümkün görünüyor:
>>> (1 in [1,0]) == True
==
bağlar daha sıkıdırin
, bu yüzden[1,0] == True
önce değerlendirilir, daha sonra bunun sonucu beslenir1 in other_result
.