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
严格判断对象身份。
按位运算要注意负数的补码表示,可能得到意外结果。对于负数的移位操作要特别小心。