目录
描述
对Python数据进行操作的符号称为Python运算符。Python运算符可以对Python支持的数据类型(如整形、集合)或存储数据类型的变量进行一系列的运算操作,产生相应的结果。
算术运算符
运算符 | 描述 | 示例 | 运算结果 | 对应的特殊方法 |
+ | 加法 | 5 + 8 | 13 | __add__ |
- | 减法 | 90 - 10 | 80 | __sub__ |
* | 乘法 | 4 * 7 | 28 | __mul__ |
/ | 浮点数除法 | 7 / 2 | 3.5 | __truediv__ |
// | 整数除法 | 7 // 2 | 3 | __floordiv__ |
% | 求余 | 7 % 3 | 1 | __mod__ |
** | 幂 | 3 ** 4 | 81 | __pow__ |
算术运算符优先级(由高到低排序):
运算符优先级 | 运算符 |
1、最高 | **(幂) |
2、中等 | *(乘)、/(除)、%(余)、//(整除) |
3、低 | +(加)、-(减) |
比较运算符
运算符 | 描述 | 示例 | 运算结果 |
== | 比较对象是否相等(等于) | 2 == 3 | False |
!= | 比较两个对象是否不等(不等于) | 2 != 3 | True |
> | 大于 | 2 > 3 | False |
< | 小于 | 2 < 3 | True |
>= | 不小于(大于等于) | 2 >= 3 | False |
<= | 不大于(小于等于) | 2 <= 3 | True |
比较运算符优先级(由高到低排序):
运算优先级 | 运算符 |
1. 高 | <(小于)、<=(不大于)、>(大于)、>=(不小于) |
2. 低 | ==(等于)、!=(不等于) |
赋值运算符
假设c = 6
运算符 | 描述 | 示例 | 运算结果(c) |
= | 赋值运算符 | c = 1 + 2 | 3 |
+= | 加法赋值运算符 | c += 3 | 9。等效于c = c + 3 |
-= | 减法赋值运算符 | c -= 3 | 3。等效于c = c - 3 |
*= | 乘法赋值运算符 | c *= 3 | 18。等效于c = c * 3 |
/= | 除法赋值运算符 | c /= 3 | 2.0。等效于c = c / 3 |
//= | 取整除赋值运算符 | c //= 3 | 2。等效于c = c // 3 |
%= | 取模赋值运算符 | c %= 3 | 0。等效于c = c % 3 |
**= | 幂赋值运算符 | c **= 3 | 216。等效于c = c ** 3 |
💡提示:赋值运算符的优先级都相同。
位运算符
按位运算符是吧数字看作二进制来进行计算的。
假设变量a、b的值如下表所示:
变量名 | 十进制值 | 对应二进制值 |
a | 60 | 0011 1100 |
b | 13 | 0000 1101 |
Python中按位运算法则如下表描述:
运算符 | 描述 | 示例 | 运算结果 |
& | 按位与。参与运算的两个值,若相应位都为1,则该位的结果为1.否则为0 | a & b | 12.对应二进制:0000 1100 |
| | 按位或。参与运算的两个值,若相应位至少有一个为1,则该位的结果是1,否则是0 | a | b | 61.对应二进制:0011 1101 |
^ | 按位异或。参与运算的两个值,若相应位不同,则该位的结果是1,否则是0 | a ^ b | 49.对应二进制:0011 0001 |
~ | 按位取反。对数据的每个二进制位取反,即把1变成0,0变成1 | ~a | -61.对应二进制:1100 0011 |
<< | 左移。运算数的各二进位全部左移若干位。高位丢弃,低位补0 | a << 2 | 240.对应二进制:1111 0000 |
>> | 右移。运算数的各二进位全部右移若干位。高位补0,低位丢弃 | a >> 2 | 15.对应二进制:0000 1111 |
按位运算符优先级(由高到低排序):
运算优先级 | 运算符 |
1、最高 | ~ 按位取反 |
2、较高 | << 左移、>> 右移 |
3、中等 | & 按位与 |
4、低 | | 按位或、^ 按位异或 |
逻辑运算符
假设a = True, b = False
运算符 | 描述 | 示例 | 运算结果 |
and | 布尔与 | a and b | False |
or | 布尔或 | a or b | True |
not | 布尔非 | not a | False |
逻辑运算符优先级(由高到低排序):
运算优先级 | 运算符 |
1. 最高 | not 布尔非 |
2. 一般 | and 布尔与 |
3. 最低 | or 布尔或 |
成员运算符
假设a = 1; 列表numbers = [1, 4, 6, 7]
运算符 | 描述 | 示例 | 运算结果 |
in | 如果在指定的序列中则返回True,否则返回False | a in numbers | True |
not in | 如果没有在指定的序列中则返回True,否则返回False | a not in numbers | False |
?成员运算符优先级相同
身份运算符
身份运算符用于比较两个对象的存储单元。
假设a = 20; b = 20
运算符 | 描述 | 示例 | 运算结果 |
is | 判断两个变量是否引用自同一个对象 | a is b | True |
is not | 判断两个变量是否引用不同的对象 | a is not b | False |
?身份运算符优先级相同
全部运算符的优先级排序(由高到低)
编号 | 运算符 | 说明 |
1 | [v1, ...]、{v1, ...}、{k1:v1, ...}、(v1, ...) | 列表/集合/字典/元组/生成器的创建和推导 |
2 | seq[n]、seq[n:m]、func(args...)、obj.attr | 索引、切片、函数调用和属性引用 |
3 | ** | 幂运算 |
4 | +x、-x、~x | 正号、负号、位求反 |
5 | *、/、//、% | 乘法、浮点除法、整数除法、取余 |
6 | +、- | 加法、减法 |
7 | <<、>> | 左移、右移 |
8 | & | 按位与 |
9 | | | 按位或 |
10 | in、not in、is、is not、<、<=、>、>=、!=、== | 属于、不属于、是一个对象、不是一个对象、小于、小于等于、大于、大于等于、不等于、等于 |
11 | not | 非 |
12 | and | 与 |
13 | or | 或 |
14 | if...else | 条件表达式 |
15 | lambda | lambda表达式 |