目录
1. 算术运算符
+加法,-减法,*乘法,/除法,%取模,//取整除,**乘方
# 除法结果都是小数
print(10 / 3) # 3.3333333333333335
print(10 / 2) # 5.0
# 取整除都是向下取整
print(10 // 3) # 3
print(-10 // 3) # -4
# a % b = a - a // b * b
print(10 % 3) # 10 - 3 * 3 = 1
print(-10 % 3) # -10 - (-4) * 3 = 2
print(10 % -3) # 10 - (-4) * (-3) = -2
print(-10 % -3) # -10 - 3 * (-3) = -1
+和*也可以用于序列拼接。
str1 = "abc"
str2 = "def"
print(str1+str2)
list1 = [1, 2]
print(list1 * 3)
'''
abcdef
[1, 2, 1, 2, 1, 2]
'''
2. 比较运算符
比较运算符的结果都是布尔类型。
数值比较:== != < > <= >=
对象比较:is is not
- is 是判断两个标识符是不是引用自一个对象
x is y,类似 id(x) == id(y),如果引用的是同一个对象则返回True,否则返回False - is not 是判断两个标识符是不是引用自不同对象
x is not y,类似 id(x) != id(y),如果引用的不是同一个对象则返回结果True,否则返回False
不要在比较数值相等时使用is,只有一种情况建议用is而不是==,那就是判断一个值是否为空值None。
成员检测:in not in
- elem in seq 如果elem在seq里,返回True,否则返回False
- elem not in seq 如果elem不在seq里,返回True,否则返回False
3. 逻辑运算符
- and 逻辑与,从左到右计算表达式,若全为真,则返回最后一个值,若存在假,则返回第一个假值
- or 逻辑或,从左到右计算表达式,只要遇到真值就返回那个真值,如果表达式结束依旧没有遇到真值,就返回最后一个假值
- not 逻辑非
and和or遵循短路原则。
4. 赋值运算符
= += -= *= /= %= **= //=
# 支持链式赋值
a = b = c = 1
print(f"a={a} b={b} c={c}")
# 支持系列解包赋值,要求=左右两侧的个数相等
a, b, c = 1, 2, 3
print(f"a={a} b={b} c={c}")
'''
a=1 b=1 c=1
a=1 b=2 c=3
'''
5. 三元运算符
a if x else b
如果表达式x为真,结果为a;如果表达式x为假,结果为b。
和C语言? :类似。
6. 位运算符
&按位与 |按位或 ^按位异或
- &:两个操作数相应的位都为1,结果为1(有0则0,记忆法:&看起来像0)
- | :两个操作数相应的位至少有一个为1,结果为1(有1则1,记忆法:|看起来像1)
- ^:两个操作数相应的位相同为0,相异为1(无进位相加)
~按位取反
<<左移:符号位不变,左边抛弃右边补0
>>右移:右边抛弃,左边补符号位