算数运算符
在 Python 中的算数运算符有如下几个:
+:加,a + b则表示求a加b的和;-:减,a - b则表示求a减b的差;*:乘,a * b则表示求a乘以b的积;/:除,a / b则表示求a除以b的商;//:地板除(取商的整数部分),a // b则表示求a除以b的商的整数部分;%:取余,a % b则表示求a除以b的余数;**:幂,a ** b则表示求a的b次幂的结果;
看如下示例:
var1 = 10
var2 = 7
res = var1 + var2
print(res) # 17
res = var1 - var2
print(res) # 3
res = var1 * var2
print(res) # 70
res = var1 / var2
print(res) # 1.4285714285714286
# / 除以 , 结果永远是一个小数
res = 6 / 3
print(res) # 2.0
# // 地板除,取结果整数部分,结果不是小数
res = 6 // 3
print(res) # 2
res = 6 // 4 #
print(res) # 1
# // 地板除,如果除数或者被除数含有小数,那么结果是小数
res = 6 // 3.0
print(res) # 2.0
# % 取余
res = var1 % var2
res = 10 % -7 # -4 3+(-7)=-4
res = -10 % 7 # 4 -3+7 = 4
res = -10 % -7 # -3 -3
# ** 幂运算
res = 2 ** 3
print(res) # 8
比较运算符
Python 中的比较运算符有如下几个:
>:大于,a > b则表示a是否大于b;<:小于,a < b则表示a是否小于b;、>=:大于等于,a >= b则表示a是否大于等于b;<=:小于等于,a <= b则表示a是否小于等于b;==:等于,a == b则表示a是否等于b;!=:不等于,a != b则表示a是否不等于b;
注意,单个等号
=是赋值哦。
比较运算符只会产生两个结果: True 或 False,看如下示例:
res = 5 > 6
print(res) # False
res = 10 <= 10
print(res) # True
res = 10 <= 3
print(res) # False
# == 比较等号两边的值是否相等
res = 9 == 9
print(res) # True
# != 比较等号两边的值是否不相等
res = 9 != 9
print(res) # False
赋值运算符
Python 中的赋值运算符有如下几个:
=:赋值,如a = b就是将b的值赋给a;+=:累加赋值,a += b同a = a + b;-=:累减赋值,a -= b同a = a - b;*=:累乘赋值,a *= b同a = a * b;/=:累除赋值,a /= b同a = a / b;//=:累地板除赋值,a //= b同a = a // b;%=:累商赋值,a %= b同a = a % b;**=:累幂赋值,a **= b同a = a ** b;
例:
# 给 a 赋值 2
a = 2
print(a) # 2
# +=,累加
# a += b -> a = a + b
a = 10
a += 5
print(a) # 15
# %=
# a %= b -> a = a % b
a = 7
a %= 2
print(a) # 1
成员运算符
在 Python 中的成员运算符有:
in:是否存在,a in container 表示 a 是否存在于 container 中;
not in:是否不存在,a not in container,表示 a 是否不存在于 container 中;
其功用类似 SQL 中的 in 和 not in,只不过在 Python 中针对的是容器类型对象,而在数据库中针对的是某表的某列,其结果一定是布尔值。
例:
# 针对于字符串
"""要求字符串是一个连续的片段"""
strvar = "好看的皮囊千篇一律,有趣的灵魂200多斤"
res = '好' in strvar
print(res) # True
res = "千篇一律" not in strvar
print(res) # False
res = "趣灵" in strvar
print(res) # True
# 针对于 list tuple set
listvar = ["范冰冰","李冰冰","周冬雨"]
res = "范冰冰" in listvar
print(res) # True
tuplevar = ("易烊千玺","胡军","刘德华")
res = "刘德华" not in tuplevar
print(res) # False
setvar = {"何润东","吕布","刘备"}
res = "吕布" in setvar
print(res) # True
# 针对于 dict
"""针对于字典中的键来进行判定"""
dictvar = {"lb":"吕布","hrd":"何润东","wy":"王源"}
res = "lb" in dictvar
print(res) # True
res = "hrd" not in dictvar
print(res) # False
res = '吕布' in dictvar
print(res) # False
身份运算符
Python 中的身份运算符有:
is:是否相同地址,a is b则表示a于b在内存中的地址是否相同;is not:是否不同地址,a is not b则表示a和b在内存中的地址是否不同;
例:
# 整型
var1 = 2222
var2 = 2222
res = var1 is var2
print(res) # True
# 浮点型
var1 = -90.1
var2 = -90.1
res = var1 is var2
print(res) # True
# 容器类型数据,地址不同
var1 = (1,2,3)
var2 = (1,2,3)
res = var1 is not var2
print(res) # False
逻辑运算符
Python 中的逻辑运算符有如下几个:
and:全真则真,一假则假;or:全假则假,一真则真;not:真变假,假变真;
例:
# and 逻辑与
"""全真则真,一假则假"""
res = True and True # True
res = True and False # False
res = False and True # False
res = False and False # False
print(res)
# or 逻辑或
"""全假则假,一真则真"""
res = True or True # True
res = True or False # True
res = False or True # True
res = False or False# False
print(res)
# not 逻辑非
"""真变假,假变真"""
res = not True # False
res = not False # True
print(res)
# 逻辑短路
True or print("111") # True
False and print("222") # False
逻辑运算符的优先级从高到低排序为 () > not > and > or,看如下示例:
res = 5 or 6 # 5
res = 5 and 6 # 6
res = 5 or 6 and 7
# 6 and 7 => 5 or 7 => 5
res = 5 and 6 or 7
# 5 and 6 => 6 or 7 => 6
res = not 5 or 6 and 7
# not 5 => False or 6 and 7 => False or 7 => 7
res = not (5 or 6) and 7
# not 5 and 7 => False and 7
res = 1>2 and 3<4 or 5>6 or 7<10 and 100>99
# False and True or False or True and True
# False or False or True
# False or True
# True
res = 1<2 or 3<4 or 5>6 or 7<10 and 100>99
# True or True or False or True and True
# True or True or False or True
# True or False or False or False
print(res)
位运算符
Python 中的位运算符有如下几种:
&:按位与;|:按位或;^:按位异或;<<:按位左移;>>:按位右移;~:按位非;
例:
# & 按位与
var1 = 19
var2 = 15
res = var1 & var2
print(res)
"""
10011
01111
00011 => 3
"""
# | 按位或
var1 = 19
var2 = 15
res = var1 | var2
print(res)
"""
10011
01111
11111 => 31
"""
# ^ 按位异或 (两者不一样返回True,两者一样返回False)
var1 = 19
var2 = 15
res = var1 ^ var2
print(res)
"""
10011
01111
11100 => 28
"""
# << 左移 5 乘以 2的2次幂
res = 5 << 2
"""
0000101
0010100 => 20
"""
print(res)
# >> 右移 5 除以 2的1次幂
res = 5 >> 1
"""
0000101
0000010
"""
print(res) # 2
# ~ 按位非 公式: -(n+1)
res = ~(20)
print(res) # 21
小结
在上述介绍的各种运算符中:
- 优先级最高的符号是
**幂运算; - 优先级最低的符号是
=赋值;
整体来说一元运算符的优先级高于二元运算符:
- 一元运算符:同一时间,只操作一个数字的是一元(如
-、~); - 二元运算符:同一时间,只操作二个数字的是二元,(如
+、-、*、/);
逻辑运算符的优先级从高到低排序为:
();not;and;or;
算数运算符的优先级规律为:
- 先算乘除,后算加减;
位运算符的优先级从高到低为:
>>和<<;&;^;|;
所有运算符类型优先级从高到低排序如下:
- 算数运算符
- 位运算符
- 比较运算符
- 身份运算符
- 成员运算符
- 逻辑运算符
评论区