在python中,单个常亮或变量可以看做最简单的表达式,使用除赋值运算符之外的其他任意运算符和函数调用连接的式子也属于表达式。
运算符 | 功能说明 |
---|---|
+ | 加法,列表、元组、字符串合并与连接,正号 |
- | 减发,集合差集,相反数 |
* | 乘法,序列重复 |
/ | 除 |
// | 求整商,若操作数中有实数,其结果为实数形式的整数 |
% | 求余数,字符串格式化 |
** | 幂运算 |
<、<=、>、>=、==、!= | 值大小比较,集合的包含关系比较 |
or | 逻辑或 |
and | 逻辑与 |
not | 逻辑非 |
in | 成员测试 |
is | 对象同一性测试,即测试是否为同一个对象或内存地址是否相同 |
竖线、^、&、<<、>>、~ | 位或,位异或,位与,左移位,右移位,位求反 |
&、^、竖线 | 集合交集、对称差集、并集(因为Markdown里的表格输入是竖线,这里我用文字代表示替避免页面错误) |
@ | 矩阵相乘运算符 |
算术运算符 > 位运算符 > 成员测试运算符 > 关系运算符 > 逻辑运算符
算术运算符遵循“先乘除,后加减”的基本运算原则,虽然python运算符有一套严格的优先级规则,但是强烈建议在编写复杂表达式时使用圆括号来明确说明其中的逻辑来提高代码可读性。
由低至高顺序:
逻辑或运算符: or
逻辑与运算符: and
逻辑非运算符: not
成员测试运算符: in, not in
身份测试运算符: is, is not
关系运算符: < , <= , > , >= , ! = , ==
按位或: |
按位异或: ^
按位与: &
移位 : << ,>>
加法与减法: + ,-
乘法、除法与取余 : *, / ,%
(1)+ 运算符出了用于算术加法意外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象直接相加或连接
①>>> [1,2,3]+[4,5,6] ——> [1, 2, 3, 4, 5, 6] #连接两个列表
②>>> (1,2,3,4)+(5,) ——> (1, 2, 3, 4, 5) #连接两个元组
③>>> ‘abcd’+‘123’ ——> ‘abcd123’ #连接两个字符串
④>>> ‘A’ + 1 ——> TypeError: must be str, not int #不支持字符与数字相加,抛出异常
⑤>>> True + 3 ——> 4 #python内部把true当做1处理
⑥>>> False + 3 —— > 3 #把false当做0处理
(2) * 运算符 出了表示算术乘法,还可用于列表、元组、字符串这几个序列,类型与整数的乘法,表示序列元素的重复,生成行的序列对象。字典和集合不支持与整数的相乘,因为其中的元素时不允许重复的。
①>>> True * 3 ——> 3
②>>> False * 3 ——> 0
③>>> [1,2,3] * 3 ——> [1, 2, 3, 1, 2, 3, 1, 2, 3]
④>>> (1,2,3) * 3 ——> (1, 2, 3, 1, 2, 3, 1, 2, 3)
⑤>>> ‘abc’ * 3 ——> ‘abcabcabc’
(3)/ 和 // 运算符在python中分别表示算术触发和算术求整商
①>>> 3/2 ——> 1.5 #数学意义上的除法
②>>> 15//4 ——>3 #如果两个操作数都是整数,结果为整数
③>>> 15.0//4 ——> 3.0 #如果操作数中有实数,结果为实数形式的整数值
④>>> -15//4 ——> -4 #向下取整
(4)%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化。
①>>> 789%23 ——> 7 #取余数
②>>> 123.45%3.2 ——> 1.849999999999996 #可以对实数进行余数运算,还有精度问题
③>>> ‘%c,%d’%(65,65) ——> ‘A,65’ #把65分别格式化为字符和整数
④>>> ‘%f,%s’%(65,65) ——> ‘65.000000,65’ #把65分别格式化为实数和字符串
(5)运算符 表示幂乘
①>>> 32——> 9 #3的2次方,等价于pow(3,2)
②>>> pow(3,2,8)——> 1 #等价于(3**2)%8
③>>> 9 ** 0.5——> 3.0 #9的0.5次方,平方根
④>>> (-9)**0.5——> (1.8369701987210297e-16+3j) #可以计算复数的平方根
关系运算符可以连用,前提是操作数之间必须可比较大小
①>>> 1<3<5 ——> True #等价于1<3 and 3<5
②>>> 3<5>2 ——> True
③>>> 1>6<8——> False
④>>> 1>6
⑤>>> 1<6
⑥>>> import math
>>> 1<6
⑦
成员测试运算符 in 用于成员测试,即测试一个对象是否为另一个对象的元素
集合的交集、并集、对称差集等运算借助 & , | , ^ 来实现,而差集则使用建好运算符实现,并集运算符并不是加号
★例题:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
结果为:4
分析如下: