Python Tips: and, or, &, | 的差別

可能很多正在學 Python 的人對於 and, or, &, | 的用法有一些疑惑, 究竟有什麼差別? 以下是說明.


  • 如果 a 和 b 都是邏輯值, 則 and 和 & ; or 和 | 沒有差異.


  • 如果 a 和 b 是數值變數, 則 & 和 | 為(二進)位運算. 從下例可知: 
    • &運算 時, 二進制第一碼會取1 (True), 第二碼會取1 (True), 第三碼會取0 (False). 故a & b 會得到6.
    • | 運算 時, 二進制第一碼會取1 (True), 第二碼會取1 (True), 第三碼會取1 (True). 故a & b 會得到7.


  • a 和 b 為數值變數, 則 and 和 or 為邏輯運算, 判斷是否為0. 0為False, 非0為True. 
    • and 運算有包含0, 則返回0; 如果無0, 則返回後值.
    • or 運算中有包含非0值時, 返回第一個非0值.

    • 相同的道理, 當兩個非數值變數做邏輯運算, 因為兩變數都是非0, 所以and會返回後值; or會返回前值.

希望以上說明, 可以幫助你釐清用法.

張貼留言

0 留言