[英]list[0] is bigger than list[1]. So it should return True, and it returns False. I don´t understand why
[英]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.