2017-10-17 318 views

回答

14

&按位AND運算符。正如documentation提到,位運算符比邏輯運算符的優先級高,所以

0 == 0 & 1 == 1 

變爲

0 == (0 & 1) == 1 

你能想象它去下坡從那裏:

0 == (0 & 1) == 1 
=> 0 == 0 == 1 
=> 0 == 0 and 0 == 1 
=> True and False 
=> False 

假設什麼你想要的是一個邏輯和,python的方式來做到這一點將使用and

0 == 0 and 1 == 1 

你可以像你期望的那樣給你True

+0

謝謝!這是我正在尋找的解釋。 – PollPenn

+0

@PollPenn不客氣! –

5

讓我們打破這一點。

這裏最高優先級的符號是括號。除了我們包裝整個表達,所以他們什麼都不做。

接下來我們有位運算符&

0 & 1其等於0

這給我們留下了0 == 0 == 1

由於0不等於1,我們得到False

僅供參考,這裏是關於operator precedence的python文檔。

+1

'0&1'產生'0',而不是'1'...'0&ANYINTEGER'產生'0'。最終結果是相似的,但中間步驟是錯誤的。 – ShadowRanger

+0

哎呀,一定是在想'''。謝謝:P – Shadow

相關問題