簡體   English   中英

Python中條件下的操作評估順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM