Önceliğinden bahseten diğer cevapların yanı sıra, ifadeniz aslında not
daha düşüktür in
:
not (True in [False, True])
Ancak, durumunuzu diğerlerinden ayırmazsanız, python'un bunu ayırmak için 2 rol ( precedence
veya chaining
) kullanacağını ve bu durumda python'un önceliği kullandığını unutmayın. Ayrıca, bir koşulu ayırmak istiyorsanız, tüm koşulu yalnızca nesne veya değeri değil parantez içine almanız gerektiğini unutmayın:
(not True) in [False, True]
Ancak belirtildiği gibi, python tarafından zincirleme yapan operatörler üzerinde başka bir değişiklik var :
Python belgelerine dayanarak :
Karşılaştırmaların, üyelik testlerinin ve kimlik testlerinin hepsinin önceliği aynıdır ve Karşılaştırmalar bölümünde açıklandığı gibi soldan sağa zincirleme özelliğine sahiptir.
Örneğin, aşağıdaki ifadenin sonucu False
:
>>> True == False in [False, True]
False
Çünkü python aşağıdaki gibi ifadeleri zincirleyecektir:
(True == False) and (False in [False, True])
Hangisi tam olarak False and True
buFalse
.
Merkezi nesnenin 2 işlem ve diğer nesneler arasında paylaşılacağını varsayabilirsiniz (bu durumda False).
Ayrıca, işlenenleri takip eden üyelik testleri ve kimlik testleri işlemleri de dahil olmak üzere tüm Karşılaştırmalar için de geçerli olduğunu unutmayın:
in, not in, is, is not, <, <=, >, >=, !=, ==
Misal :
>>> 1 in [1,2] == True
False
Bir başka ünlü örnek sayı aralığıdır:
7<x<20
ki şuna eşittir:
7<x and x<20