目录
Python运算符
Python运算符内容较多,是编程的基础。这些内容很难一次性掌握,以后会天天见,如果忘记了可以再来查。
Python主要有5种运算,内容如下。
- 算术运算符
- 比较运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
算术运算符
算术运算符包括7种:加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)、取整除(//)。
算术运算符主要用于数字运算,常见运算如下。
运算 | 结果 |
---|---|
x + y |
x 和 y 的和 |
x - y |
x 和 y 的差 |
x * y |
x 和 y 的乘积 |
x / y |
x 和 y 的商 |
x // y |
x 和 y 的商数 |
x % y |
x / y 的余数 |
-x |
x 取反 |
+x |
x 不变 |
abs(x) |
x 的绝对值或大小 |
int(x) |
将 x 转换为整数 |
float(x) |
将 x 转换为浮点数 |
complex(re, im) |
一个带有实部 re 和虚部 im 的复数。im 默认为0。 |
c.conjugate() |
复数 c 的共轭 |
divmod(x, y) |
(x // y, x % y) |
pow(x, y) |
x 的 y 次幂 |
x ** y |
x 的 y 次幂 |
所有 numbers.Real
类型 (int
和 float
) 还包括下列运算:
运算 | 结果 |
---|---|
math.trunc(x) |
x 截断为 Integral |
round(x[, n]) |
x 舍入到 n 位小数,半数值会舍入到偶数。 如果省略 n,则默认为 0。 |
math.floor(x) |
<= x 的最大 Integral |
math.ceil(x) |
>= x 的最小 Integral |
其中取模与取整除使用不多,容易忘记,使用示例如下。
print(10 + 3) # 13
print(10 - 3) # 7
print(10 * 3) # 30
print(10 / 3) # 3.3333333333333335
print(10 % 3) # 1
print(10//3) # 3
print(int(10/3)) # 3
print(10**3) # 1000
这里int()函数可以把一个小数(浮点数)转为整数与取整除意思相同,后面数据类型转换内容会讲到。
比较运算符
比较运算符即关系运算符。
在 Python 中有十种比较运算符。
运算 | 含义 |
---|---|
< |
严格小于 |
<= |
小于或等于 |
> |
严格大于 |
>= |
大于或等于 |
== |
等于 |
!= |
不等于 |
is |
对象标识 |
is not |
否定的对象标识 |
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
比较运算符很容易理解,与其他语言中表述相似,其中不等于的符号是"!=",这与有的语言不同。
身份运算is和is not属于比较运算。
成员检测运算in和not in也属于比较运算。
赋值运算符
Python中没有i++和++i,不同于C语言。
以下假设变量a为10,变量b为20。参考菜鸟Python网(https://www.runoob.com/python3/python3-data-type.html)。
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c = a 等效于 c = c a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c = a 等效于 c = c a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
:= | 海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符。 | 在这个示例中,赋值表达式可以避免调用 len() 两次 |
海象运算符(了解)
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
逻辑运算符
逻辑运算符即布尔运算,and
, or
, not
。
运算 | 结果 | 注释 |
---|---|---|
x or y |
if x is false, then y, else x | (1) |
x and y |
if x is false, then x, else y | (2) |
not x |
if x is false, then True , else False |
(3) |
注释:
- 这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。
- 这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。
not
的优先级比非布尔运算符低,因此not a == b
会被解读为not (a == b)
而a == not b
会引发语法错误。
位运算符
按位运算只对整数有意义。 计算按位运算的结果,就相当于使用无穷多个二进制符号位对二的补码执行操作。
运算 | 结果 |
---|---|
x | y |
x 和 y 按位 或 |
x ^ y |
x 和 y 按位 异或 |
x & y |
x 和 y 按位 与 |
x << n |
x 左移 n 位 |
x >> n |
x 右移 n 位 |
~x |
x 逐位取反 |
运算符优先级
下表对 Python 中运算符的优先顺序进行了总结,从最低优先级(最后绑定)到最高优先级(最先绑定)。 相同单元格内的运算符具有相同优先级。 除非句法显式地给出,否则运算符均指二元运算。 相同单元格内的运算符均从左至右分组(除了幂运算是从右至左分组)。
请注意比较、成员检测和标识号检测均为相同优先级,并具有如 比较运算 一节所描述的从左至右串连特性。
运算符 | 描述 |
---|---|
:= |
赋值表达式 |
lambda |
lambda 表达式 |
if -- else |
条件表达式 |
or |
布尔逻辑或 OR |
and |
布尔逻辑与 AND |
not x |
布尔逻辑非 NOT |
in , not in , is , is not , < , <= , > , >= , != , == |
比较运算,包括成员检测和标识号检测 |
| |
按位或 OR |
^ |
按位异或 XOR |
& |
按位与 AND |
<< , >> |
移位 |
+ , - |
加和减 |
* , @ , / , // , % |
乘,矩阵乘,除,整除,取余 5 |
+x , -x , ~x |
正,负,按位非 NOT |
** |
乘方 6 |
await x |
await 表达式 |
x[index] , x[index:index] , x(arguments...) , x.attribute |
抽取,切片,调用,属性引用 |
(expressions...) ,[expressions...] , {key: value...} , {expressions...} |
绑定或加圆括号的表达式,列表显示,字典显示,集合显示 |
容易混淆的优先级程序可以用小括号来避免优先级错误。
更多内容请参考官方手册
(https://docs.python.org/zh-cn/3/library/stdtypes.html#boolean-operations-and-or-not)
优先级内容参考
(https://docs.python.org/zh-cn/3/reference/expressions.html#operator-summary)