&=
x = 6 # 二進位: 110
x &= 3 # 二進位: 011
print(x) # 輸出: 2
為什麼結果是 2?
6
的二進位:110
3
的二進位:011
- 做 AND (
&
) → 逐位比較,只有 1 AND 1 = 1,其他為 0
110 (6)
& 011 (3)
------
010 (2)
x &= y
等同於 x = x & y
,就是把 x 和 y 做 bitwise AND,然後存回 x。
<<=
x = 6 # 二進位: 110
y = x << 2 # 左移 2 位
print(y) # 輸出: 24
x = 6 = 0000 0110 (二進位)
左移2位 → 0001 1000 = 24
所以6 << 2 = 24
同理可知,可以推得>>=的邏輯了~~
海象運算子 :=
(Python 3.8+)
print(x := 3)
# 等同於
x = 3
print(x)
- 一邊賦值,一邊使用該值。
- 常用於
while
或if
,避免重複寫變數。
# 沒用 := 需要兩次寫 len()
n = len(data)
if n > 10:
print(n)
# 用 :=
if (n := len(data)) > 10:
print(n)