表达式中的运算符用于对数据进行算术运算、比较或逻辑组合。Python 提供算术、比较、逻辑、赋值等常用运算符,另有 is、in 及按位运算符。若将单个 = 误用于相等判断,或混淆 / 与 //,结果可能与预期不符。本节从一组数值运算入手,再按类别说明各类运算符的含义与注意点。
算术运算示例
x = 15
y = 4
print('x + y =', x + y) # 19
print('x - y =', x - y) # 11
print('x * y =', x * y) # 60
print('x / y =', x / y) # 3.75,/ 的结果总是浮点数
print('x // y =', x // y) # 3,整除,向下取整
print('x ** y =', x ** y) # 50625,幂运算Python 的 / 对数值相除时结果类型为浮点数,这与 C 语言、Java 中两个整数相除常得到整数商的情形不同。若需要整除商,应使用 //。若需要余数,应使用 %。
算术运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
+ | 加 | x + y |
- | 减 / 一元负号 | x - y |
* | 乘 | x * y |
/ | 除(结果总是 float) | x / y |
% | 取余 | x % y |
// | 整除(向下取整) | x // y |
** | 幂 | x ** y |
比较运算符
比较运算的结果是 True 或 False:
x = 10
y = 12
print(x > y) # False
print(x < y) # True
print(x == y) # False(注意是双等号)
print(x != y) # True
print(x >= y) # False
print(x <= y) # True判断相等必须使用 ==。单个 = 表示赋值。二者混用会导致语法错误或逻辑错误。
逻辑运算符
Python 使用关键字 and、or、not 进行逻辑运算:and 要求两侧均为真,or 在任一侧为真时为真,not 对布尔值取反。
x = True
y = False
print(x and y) # False,两个都真才真
print(x or y) # True,一个真就真
print(not x) # False,取反赋值运算符
= 表示简单赋值。复合赋值(如 a += 5)等价于 a = a + 5,对减、乘、整除、幂等运算有对应形式:
a = 10
a += 5 # a = a + 5 → 15
a -= 3 # a = a - 3 → 12
a *= 2 # a = a * 2 → 24
a //= 4 # a = a // 4 → 6
a **= 2 # a = a ** 2 → 36
print(a) # 36身份运算符 is / is not
is 判断两个名字是否绑定到同一对象,== 判断值是否相等。对内容相同但分别创建的可变对象,二者结果可能不一致:
x3 = [1, 2, 3]
y3 = [1, 2, 3]
print(x3 == y3) # True,值相等
print(x3 is y3) # False,是两个不同的列表对象成员运算符 in / not in
in 用于判断元素是否出现在字符串、列表、元组等序列中。对字典则判断键是否存在:
s = 'Hello world'
d = {1: 'a', 2: 'b'}
print('H' in s) # True,注意大小写敏感
print('hello' in s) # False,小写 hello 不在
print(1 in d) # True,1 是字典的键
print('a' in d) # False,'a' 是值不是键位运算符
位运算符按二进制位进行与、或、异或、取反及移位操作,在标志位、权限掩码等场景中使用:
x = 10 # 二进制 00001010
y = 4 # 二进制 00000100
print(x & y) # 0
print(x | y) # 14
print(x ^ y) # 14
print(x << 2) # 40,左移两位相当于乘 4
print(x >> 2) # 2,右移两位相当于整除 4运算符优先级
求值顺序不确定时,应使用括号明确意图。大致顺序为:算术运算(其中 ** 较高),再比较运算,最后逻辑运算。
print(2 + 3 * 4) # 14,乘先算
print((2 + 3) * 4) # 20,括号优先
print(True or False and False) # True,and 比 or 优先级高编写表达式时的核对项
- 相等比较是否使用
==而非=? - 需要浮点商时用
/,需要整数商时用//? - 同一对象用
is,值相等用==? - 优先级不明确时是否已加括号?
小结
编写表达式时应区分 == 与 =、/ 与 //,并在对象同一性与值相等之间正确选用 is 与 ==。
本节归纳了 Python 常用运算符及其优先级要点。下一节说明条件语句(if / elif / else)的写法。