[英]Order of operation evaluation in condition in Python
如果我有類似a = [1,2,3]
東西,並且我1 in a == True
寫了一個類似1 in a == True
的語句,這似乎評估為 false。
但是,如果我寫(1 in a) == True
,則計算結果為真。
我對 Python 如何評估第一個語句最終達到 false 有點困惑。
==
和in
都被認為是比較運算符,這意味着運算符鏈接生效:
比較可以任意鏈接,例如,
x < y <= z
等價於x < y and y <= z
,除了y
只計算一次(但在這兩種情況下,當找到x < y
時根本不計算z
是假的)。
這個鏈接允許你寫:
if 0 <= x < 20: # meaning: if x >= 0 and x < 20:
因此,表達1 in a == True
被鏈接為1 in a and a == True
和,由於該右側and
評估為假,則整個表達式為假。
當您用括號“隔離”表達式的一部分時,不會發生這種鏈接,這就是為什么(1 in a) == True
如您所願。
已經解釋過,將布爾值與True
(或False
就此而言)進行比較並不是你真正應該做的事情,因為這會導致邏輯上無限的場景,例如:
if (((a == 7) == True) != False) == True # 'a == 7' already a boolean.
僅使用以下之一要好得多:
if expression # if comparing with True
if not expression # if comparing with False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.