跳到主要内容

Python 运算符深入理解

成员运算符

in 运算符用于判断某个值是否存在于指定序列中,返回布尔值 True 或 False。而 not in 则用于判断某个值不存在于指定序列中。

test_list = [1, 2, 3, 4, 5]

# 成员检查
print(3 in test_list) # True
print(6 in test_list) # False

# 非成员检查
print(3 not in test_list) # False
print(6 not in test_list) # True

# 在字符串中使用
message = "Hello, World!"
print("Hello" in message) # True
print("Goodbye" not in message) # True

身份运算符

is 运算符用于检查两个引用是否指向内存中的同一对象,而不是比较值是否相等。is not 则判断两个引用是否指向不同对象。

array_a = [1, 2, 3]
array_b = array_a
array_c = [1, 2, 3]

print(array_a is array_b) # True,指向同一对象
print(array_a is array_c) # False,值相同但是不同对象

按位运算符

按位运算符对整数在二进制层面进行操作,常用于底层编程和位掩码。

num_x = 10  # 二进制 1010
num_y = 4 # 二进制 0100

# 按位与
print(num_x & num_y) # 0 (0000)

# 按位或
print(num_x | num_y) # 14 (1110)

# 左移两位
print(num_x << 2) # 40 (101000)

指数运算符

** 运算符用于计算幂值,比使用 pow() 函数更直观。

base = 2
exponent = 3
result = base ** exponent
print(result) # 8

地板除运算符

// 运算符执行除法并向下取整,结果总是小于或等于真实的商。

dividend = 17
divisor = 4
result = dividend // divisor
print(result) # 4,17/4=4.25向下取整为4

注意事项

使用身份运算符时需注意 Python 的对象驻留机制,某些情况下小整数和短字符串可能会得到意外结果。建议使用 == 比较值是否相等,使用 is 严格判断对象身份。

按位运算要注意负数的补码表示,可能得到意外结果。对于负数的移位操作要特别小心。