簡體   English   中英

我不理解python True和False或True中的運算符優先級

[英]I don't understand operator precedence in python True and False or True

它在python 2.7文檔中說or具有比and低的優先級。 但是當我輸入空閑時:

>>> True and True or False
True
>>> True and False or True
True
>>> True and False
False

為什么此True and False or True表達式的結果為True

較高的優先級意味着一個運算符將在優先級較低的運算符之前進行求值,例如在算術中,應在加法之前對乘法進行求值,因此1 + 2 * 3將得出7而不是9

在您的用例中,首先評估True and False ,並給出False 然后使用or運算符對該結果求值(即False or True ),得出True

實際上,運算符優先級與該結果無關。 無論你把括號,因為這將是相同的or如果任其參數為真,總是返回true。 所以:

True and (False or True) == True and (True) == True
(True and False) or True == (False) or True == True

您的聲明要求執行以下操作

第一個python評估左邊的表達式;

評估1:對與錯(由於這會評估為false,因此python會查看or或表達式)

評估2:是非題

然后評估為真

您可能還需要查看布爾邏輯和真值表,以幫助理解其工作原理。

最高優先級意味着將括號放在何處

((True and True) or False)  # True
((True and False) or True)  # True
(True and False)            # False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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