运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在python中有7个运算符,分别有:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符
算数运算符有 + - * / % // ** 7个。
注意:使用运算符时,左边对象的 自身方法或 自身的反向方法(如 : __add__ 和 __radd__ )是否符合它们的要求,否者就会报错“TypeError”。
1 、+
用于对象之间的相加,通常用于数字的加法运算和字符串拼接。
a1 = 10b1= 20a2= "abc"b2= "def"
print(a1 +b1)###############################################结果 abcdef
print(a2 +b2)###############################################结果 30
print(a1 +b2)#############################################不符合 __add__ 、 __radd__ 要求会报错#TypeError: unsupported operand type(s) for +: 'int' and 'str'
2、 -
主要用于数字的加减
a1 = 10b1= 20
print(a1 -b1)###########################################结果 -10
3、*
主要用于数字相乘或数据重复多少次。
a1 = 10b1= 20a2= "abc"a3= [1,2]print(a1 *b1)#======> 200
print(a2 * 2)#======> abcabc
print(a3 * 3) # 列表重复3次#======> [1, 2, 1, 2, 1, 2]
4、/
主要用于数字相除
a1 = 10b1= 20
print(a1 +b1)#=========> 0.5
5、%
取模 - 返回除法的余数
a1 = 11b1= 2
print(a1 %b1)#============> 1
6、//
取整除 - 返回商的整数部分(向下取整)
a1 = 11b1= 2
print(a1 //b1)#===============> 5
7、**
数字幂运算
a1 = 10b1= 2
print(a1 **b1)#==============> 100
比较(关系)运算符
比较运算符有:== != <> > = <= 7个。使用比较运算符时,会返回一个布尔值(True或False)。
1、==
用于比较对象是否相等,与is有区别。
a1 = 10b1= 2a2= int(10)print(a1 == b1)#==================> False
print(a1 == a2)#==================> True
2、 != 和 <>
这两个运算符都是用于比较两个对象是否不相等。
注:在python3中已经没有<>, 只有!=。
a1 = 10b1= 2a2= 10
print(a1 !=b1)#===================== > True
print(a1 !=a2)#=====================> False
3、>
是否大于。
a1 = 10b1= 2
print(a1 >b1)#============> True
4、<
是否小于。
a1 = 10b1= 2
print(a1 False
5、>=
是否大于等于。
a1 = 10b1= 11a2= 10
print(a1 >=b1)#============> False
print(a1 >=a2)#============> True
6、<=
是否小于等于。
a1 = 10b1= 11a2= 10
print(a1 <=b1)#==============>True
print(a1 <=a2)#==============> True
赋值运算符
赋值运算符是用于给变量赋值的运算符。包括 = 和 =与算术运算符的结合( += -= *= /= %= //= **= ),共8个。
1、=
把等号右边的值赋给左边的变量,不参与算术运算。
a = 1b= "hello"c= [1, 2, 3]
2、+=
和原来的值相加并重新赋值给自己。
a = 11a+= 10 #等价于:a = a + 10
b= [1, 2]
b+= [3, 4]print(a)#==================> 21
print(b)#==================> [1, 2, 3, 4]
3、-=
和原来的值相减并重新赋值给自己。
a = 11a-= 10
print(a)#================> 1
4、*=
和原来的值相乘并重新赋值给自己。
a = 2a*= 5
print(a)#====================> 10
5、/=
和原来的值相除并重新赋值给自己。
a = 10a/= 2
print(a)#========================> 5.0
6、%=
和原来的值取模并重新赋值给自己。
a = 11a%= 2
print(a)#======================> 1
7、//=
和原来的值取整并重新赋值给自己。
a = 11a//= 2
print(a)#==================> 5
8、**=
和原来的值进行幂运算并重新赋值给自己。
a = 10a**= 2
print(a)#===================> 100
逻辑运算符
print的逻辑运算符有3个,分别是 and、or和not。
1、and
对应布尔"与" , 如果 左边 为 False,返回 False,否则它返回 右边 的计算值。
#注:0的布尔值为False,其他数的布尔值为True
x1 = 9y1= 10x2=0
y2= 12 + 23x3=True
y3= 12 + 10
print(x1 andy1)#=====================> 10
print(x2 andy2)#=====================> 0
print(x3 andy3)#=====================> 22
2、or
对应布尔"或" ,如果 左边为True,它返回 左边 的值,否则它返回 右边 的计算值。
x1 = 9y1= 10x2=False
y2= 12 + 10
print(x1 ory1)#====================> 9
print(x2 ory2)#====================> 22
3、not
对应布尔"非" ,如果 为 True,返回 False 。如果为 False,它返回 True。
a = 1b=0print(nota)#=====================> False
print(notb)#=====================> True
位运算符
按位运算符是把数字看作二进制来进行计算的。python的位运算符有 & | ^ ~ <> ,一共6个。关于运算方式请看 按位与、或、异或等运算方法。
1、&
按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
a = 3 # 0b11b= 5 # 0b101
print(a &b)#==================> 1
2、|
按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1。
a = 3b= 5
print(a |b)#==============> 7 # 0b111
3、^
按位异或运算符,当两对应的二进位相异时,结果为1。
a = 3b= 5
print(a ^b)#==============> 6 # 0b110
4、~
按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1。
a = 3
print(~a)#===============> -4 # -0b100
5、<<
左移动运算符:运算数的各二进位全部左移若干位,由 <
a = 3
print(a << 2)
#==================> 12 #0b1100
6、>>
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。
a = 10 #0b1010
print(a >> 2)#===============> 2 # 0b10
成员运算符
成员运算符由于判断成员与序列的包含关系,序列包含字符串、元祖、列表、字典等。成员运算符有两个 : in 和 not in
1、in
如果在指定的序列中找到值返回 True,否则返回 False。
msg = "hello world"name_tuple= ("Alex", "Jack", "Iain",)
name_list= ["Alex", "Jack", "Iain"]
info_dic={"name": "Jack","age": 20}print("e" inmsg)#==========> Ture
print("William" inname_tuple)#==========> False
print("Alex" inname_tuple)#==========> True
print("name" in info_dic) #序列为字典时判断的是键是否在序列中#==========> True
2、not in
如果在指定的序列中没有找到值返回 True,否则返回 False。
msg = "hello world"name_tuple= ("Alex", "Jack", "Iain",)
name_list= ["Alex", "Jack", "Iain"]
info_dic={"name": "Jack","age": 20}print("e" not inmsg)#====================> False
print("William" not inname_tuple)#====================> True
print("Alex" not inname_tuple)#====================> False
print("name" not ininfo_dic)#====================> False
身份运算符
身份运算符用于比较两个对象的存储单元(通常比较对象的ID),Python的身份运算符有2个:is 和 not is
1、is
is 是判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False
a = "Jack"b= "Jack"
print(id(a))#==================>2294321321136
print(id(b))#==================> 2294321321136
print(a isb)#==================> True
2、is not
判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。
a = "Jack"b= "Jack"c= 12
print(id(a))#================> 1464669902000
print(id(b))#================> 1464669902000
print(id(c))#================> 140725329687136
print(a is notb)#================> False
print(a is notc)#================> True
运算符优先级
python有这么多的运算符,当多个运算符一起使用时就会有一定的优先级。一般情况下,运算符优先级表决定了哪个运算符在别的运算符之前计算。但是,如果你想要改变它们默认计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(10 + 20) * 2的样子。
其优先级顺序如下表所示:
序号运算符描述
1
**
指数(次幂)运算
2
~ + -
补码,一元加减(最后两个的方法名称是+@和-@)
3
* / % //
乘法,除法,模数和地板除
4
+ -
5
>> <<
向右和向左位移
6
&
按位与
7
^
按位异或和常规的“OR”
8
<= < > >=
比较运算符
9
<> == !=
等于运算符
10
= %= /= //= -= += *= **=
赋值运算符
11
is is not
身份运算符
12
in not in
成员运算符
13
not or and
逻辑运算符
注:更多关于运算符的信息可以点击运算符重构。