最後介紹,位元運算子、in 與 is 運算子、跨列運算子
在程式語言的底層,所有數值都是以二進位表現 ( 0 和 1 ),「位元運算子」會針對每個數值的「二進位」字元進行位元運算,下面的表格使用 4 ( 二進位 0100 ) 和 5 ( 二進位 0101 ) 為例子
運算子 | 說明 | 範例 | 結果 |
---|---|---|---|
& | 且,二進位數字中「完全相同」的部分為1,不同的為 0 | 4&5, 0100(4的2進位) 和 0101(5的2進位) 比較後,回傳 0100 | 4 |
| | 或,二進位數字「只要有1」的部分都為 1 | 4&5,0100 和 0101 比較後,回傳 0101 | 5 |
^ | 互斥,二進位數字「完全相同」的部分都為 0,不同的部分以 1 取代 | 4^5, 0100 和 0101 比較後,回傳 0001 | 1 |
~ | 相反,二進位數字 0 變成 1,1 變成 0 | ~4,0100 相反為 1011 | -5 |
>> | 右移,將二進位數字往右移動指定位數,左側補 0 | 4>>2,0100 往右移動兩位 0001 | 1 |
<< | 左移,將二進位數字往左移動指定位數,右側補 0 | 5<<2,0101 往左移動兩位 10100 | 20 |
print(4&5) # 4
print(4|5) # 5
print(4^5) # 1
print(~4) # -5
print(4>>2) # 1
print(5<<2) # 20
in 運算子 可以判斷 b 是否包含 a
is 運算子可以判斷 a 和 b 是否為相同物件
如果判斷包含或相同,回傳 True,否則回傳 False
a = 1
b = 9
c = [1,2,3,4,5]
print(a in c) # True
print(b in c) # False
x = [1,2,3]
y = [1,2,3]
z = x #這裡有將z ,x設為相同物件, 但y沒有
print(x is y) # False
print(x is z) # True
算式過長,需要換行,除了使用小括號包覆使其換行計算,也能使用「反斜線 \」就可以將程式碼進行換列
注意,使用跨列運算子後不得加上空格或其它字元
a = ( 1 + 2 + 3 +
4 + 5 + 6 +
7 + 8 + 9 ) #45
b = 1 + 2 + 3 +
4 + 5 + 6 +
7 + 8 + 9 #45