Python 运算符大全:算术 + 赋值 + 比较 + 逻辑 + 其他,一文打尽
一、算术
算数运算符可分为+(加)-(减) *(乘) /(除) **(幂) // (整除)%(取余),他们的优先级为:幂高于* / // %高于加减,具体代码如下:
# 优先级: ** > (*,/,//,%) > (+,-)
print(f"2**3**2 = {2**3**2}") # **从右往左算,先算3**2=9,再算2**9=512
print(f"10+3*4 = {10+3*4}") # 先乘后加
print(f"10/2*4 = {10/2*4}") # 乘除同级,从左往右
print(f"10//3*2 = {10//3*2}") # 整除和乘同级
print(f"10%3*2 = {10%3*2}") # 取余和乘同级
print(f"2+3*4**2//5%3 = {2+3*4**2//5%3}") # 混合运算
print(f"(2+3)*4 = {(2+3)*4}") # 括号优先
print(f"5+3={5+3} 5-3={5-3} 5*3={5*3}")
print(f"5/3={5/3} 5**3={5**3} 5//3={5//3} 5%3={5%3}")
同时需要注意以下几点
1.同级运算符从左往右算,但幂运算特殊,是从右往左算。比如 232 实际是先算 32=9,再算 29=512。
2.想改变运算顺序就用括号,括号里的先算。
3.除号(/)算出来是浮点数,整除(//)只保留整数部分,取余(%)拿余数
二、赋值
= 是基本赋值,其他的的有 +=、-=、*=、/=、//=、%=、**=,代码如下:
# 赋值运算符: = += -= *= /= //= %= **=
x = 10
x += 3
print(x) # 13
x = 10
x -= 3
print(x) # 7
x = 10
x *= 3
print(x) # 30
x = 10
x /= 3
print(x) # 3.333...
x = 10
x //= 3
print(x) # 3
x = 10
x %= 3
print(x) # 1
x = 10
x **= 3
print(x) # 1000
a = b = 5 # 链式赋值
print(a, b) # 5 5
c, d = 3, 7 # 同时赋值
print(c, d) # 3 7
c, d = d, c # 交换
print(c, d) # 7 3
赋值运算符优先级低,先把右边算完再赋给左边。复合赋值运算符就是把运算和赋值合并写,比如 x += 3 就是 x = x + 3。赋值是让变量指向某个对象,数字字符串这种不可变的没事,列表字典这种可变的,多个变量指向同一个的时候改一个另一个也跟着变,要注意。链式赋值 a = b = 10 能同时给多个变量赋同一个值,批量赋值 a, b = 3, 7 能分别赋值,还能用来交换变量 a, b = b, a。
三、比较
一共6个比较运算符:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=),比较运算符用来比较两个值,结果只有两种:True 或 False。具体代码展示如下:
# 比较运算符:== != > < >= <=
a, b = 5, 3
print(a == b) # False
print(a != b) # True
print(a > b) # True
print(a < b) # False
print(a >= b) # True
print(a <= b) # False
print(a + 2 > b + 1) # 7 > 4,True
print("apple" < "banana") # True
print(True == 1) # True
优先级比赋值高,比算术低,所以先算算术再比较再赋值。字符串也能比,按字母顺序(unicode编码),比如 "apple" < "banana" 是 True。等于(==)和赋值(=)是两码事,千万不要别弄混,一个是比较一个是赋值。布尔值 True 和 False 分别当成 1 和 0 来比较,所以 True == 1 是 True,False == 0 也是 True。
四、逻辑
一共3个逻辑运算符:and(与)、or(或)、not(非),他们的运算规则为
and:两边都为 True 结果才是 True,只要有一个 False 就是 False
or:只要有一个 True 结果就是 True,两边都 False 才是 False
not:取反,True 变 False,False 变 True
具体代码如下:
# 逻辑运算符:and or not
print(True and True) # True
print(True and False) # False
print(True or False) # True
print(False or False) # False
print(not True) # False
print(not False) # True
print(5 > 3 and 2 < 4) # True
print(5 > 3 and 2 > 4) # False
print(5 > 3 or 2 > 4) # True
# 短路
print(0 and 10) # 0,左边是0直接返回0
print(5 or 0) # 5,左边是5直接返回5
# 非布尔值当作布尔值用
print(3 and 5) # 5
print(0 or 8) # 8
他们仨也有优先级,not 最高,and 其次,or 最低。如果混着用,先算 not,再算 and,最后算 or。如果想改变顺序就用括号。
五、其他
其他运算符包括但不限于位运算符,成员运算符,身份运算符等,
位运算符
&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)
位运算符是把数字当成二进制来算,逐位操作。& 是两位都是1结果才是1,| 是只要有一位是1结果就是1,^ 是两位不同结果才是1,~ 是把1变0、0变1(包括符号位)。<< 是向左移,右边补0,相当于乘以2的n次方;>> 是向右移,左边补符号位,相当于整除2的n次方。
成员运算符
in
用来判断一个元素是否在某个序列里(字符串、列表、元组、字典、集合等)。在字典里判断的是键,不是值。结果是 True 或 False。
身份运算符
is
主要用来引用类型比较,比较值用 ==,比较身份(内存地址)用 is。对于列表、字典、自定义对象这类可变类型,两个变量即使内容完全一样,如果是分别创建的,is 比较结果是 False,因为它们不是同一个对象。只有把同一个对象赋给另一个变量时,is 才是 True。
展示代码如下:
# 位运算符
a, b = 5, 3 # 5=0101, 3=0011
print(a & b) # 1 (0001)
print(a | b) # 7 (0111)
print(a ^ b) # 6 (0110)
print(~a) # -6
print(a << 1) # 10 (左移1位乘2)
print(a >> 1) # 2 (右移1位除2)
# 成员运算符
lst = [1, 2, 3, 4]
print(3 in lst) # True
print(5 in lst) # False
print(5 not in lst) # True
# 身份运算符
x = [1, 2, 3]
y = [1, 2, 3]
z = x
print(x == y) # True,值相等
print(x is y) # False,不是同一个对象
print(x is z) # True,指向同一个对象
更多推荐



所有评论(0)