Python运算符及其优先级总结⼤全(新⼿必收藏)
众所周知,在Python中运算符是⾮常重要的⼀部分,没有它们我们就不能写出栩栩如⽣的程序,那么它们具体有哪些类别呢?
分别⼜有什么作⽤呢?优先级的情况优势怎样的呢?今天博主就带你⾛近Python运算符!
Python⾥的运算符主要有算术运算符、⽐较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、⾝份运算符这七类。
下⾯就让我来为⼤家细细地讲解吧!
⽬录
⼀、算术运算符
算术运算符就是我们平常所说的加减乘除,但是Python⾥的算术运算符不仅仅只有这四个,还有取余运算、整除运算、乘⽅(幂)运算。
名称符号描述简单⽰例备注
加法运算+求两个数的和或者⽤于连接
字符串、列表等
print(1+2)#3 print([1]+[2])#
[1,2] print('1'+'2')#'12'
减法运算-求两个数的差或者两个集合
的差集等
print(3-2)#1 print({1,2}-
{2})#{1}
乘法运算*求两个数的积或者⽤于创建
重复字符串、列表等
print(1*2)#2 print([1]*2)#
[1,1] print('1'*2)#'11'
除法运算/求两个数的商print(3/2)#1.5
【1】除不尽时默认保留
16位⼩数,⽆论是否除
尽,结果为浮点数
乘⽅运算**求⼀个数的某次⽅print(2**3)#8【2】2**0.5代表
sqrt(2)
整除运算//整除,舍去余数print(3//2)#1【3】向下取整(不是向
零)
取余运算%求两个数相除后的余数print(5%2)#1【4】向下取余,结果取
绝对值
【1】print(1/3)的输出结果为0.3333333333333333,print(2/1)的输出结果为2.0【2】2**0.5的意思是2的0.5次⽅,就是⼆次根号下2,math模块⾥⾯表⽰为sqrt(2)
【3】print(-3//2)的输出结果为-2(向下取整),⽽不是-1(向零取整)
【4】print(-2.5%2)的输出结果为1.5,其计算过程为向下取余得到-1.5,取绝对值得到1.5
⼆、⽐较运算符
⽐较运算符,顾名思义,就是⽤来⽐较两个对象的,⼀般⽤在循环语句中的循环终⽌判断条件或者在if-elif-else语句中,返回值是⼀个【1】布尔值。
符号
描述
简单⽰例
python新手代码及作用备注
>或>=判断⼀个对象是否⼤于(等于)另⼀个对象
print(1>2)#False
<;或<=判断⼀个对象是否⼩于(等于)另⼀个对象
print(1<=2)#True
==判断两个对象是否相同
print(1==1.0)#True
【2】判断两个对象的值在⼀定范围内是
否相同
!=判断两个对象是否不同
print(1!=1.0)#False
【1】有些时候返回值True和False会被视为1和0,如print([1,2][1>2])的输出结果为1
【2】在⼀定范围内,整型与浮点型值相同⽤==去⽐较会输出True,但当值⽐较⼤的时候会输出False,
这是由浮点数不准确导致的,print(1e+23 == 100000000000000000000000)输出的结果为False(顺便⼀提,科学计数法表⽰的是浮点数),print(1==1.0)输出True
三、赋值运算符
赋值运算符是给⼀个变量进⾏赋值时使⽤的,【1】赋值的⽅式有很多种,⽽且在Python3.8版本中还新增加了⼀种运算符——海象运算符。为什么叫它海象运算符呢?因为它横起来看就像⼀只海象的眼睛和长长的⽛齿。
名称符号描述
备注
简单赋值运算符=简单地定义⼀个变量并赋值加法赋值运算符+=  a += b 等价于 a = a + b        这七个赋值运算符与其等价式⼦相⽐,它们属于原地运算,它们的运算都是在⾃⼰原本的数值上进⾏计算和修改的,不会消耗额外的内存。⽽其等价式的实质是(以加法赋值运算符为例)先计算a+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 := 1 等价于声明定义a并赋值【2】可以简化代码,提⾼效率
【1】赋值运算符还可以与位运算结合,即&=、|=、^=、~=、>>=、<<=【2】下⾯的两段代码等价,但是上⾯的代码效率更⾼,代码量也更少!
if a:=1 : print('Yes')#'Yes'
a = 1
if a : print('Yes')#'Yes'
四、位运算符
位运算符或许听起来很神秘,看起来或许很难理解,其实吧,只要静下⼼来细细研读,还是可以弄明
⽩的。位运算也没什么特定,就两点,⼀是⽐较难懂,⼆是运算速度快!为什么位运算符的名字这么奇怪嘞?‘位’是个什么意思呢?位运算是对数字的⼀种的运算,其本质是将⼗进制数字转化为⼆进制数字进⾏操作,这⾥涉及计算机的原理了,所以位运算⾮常快。所谓的‘位’就是⼆进制01数字串中0和1的位置的变化,具体看下表。
名称
符号
描述
简单⽰例
备注
按位与运算符&⼆进制数字相应位置都为1则为1,否则为0
print(2&3)#2
对两个数字进⾏操作
按位或运算符|⼆进制数字相应位置都为0则为0,否则为1
print(2|3)#3
按位异或运算符^⼆进制数字相应位置不同则为1,否则为0
print(2^3)#1
按位取反运算符
~
【1】⼆进制数字相应位置0变1,1变0,即
~n=-n-1(相反数减⼀)
print(~2)#-3
对单个数字进⾏操作
左移运算符<<
⼆进制数字各位置左移,即n<<m=n*2**m
(乘以2的m次⽅)print(2<<2)#8
右移运算符>>⼆进制数字各位置右移,即
n>>m=n//(2**m)(除以2的n次⽅后向下取整)
print(2>>2)#0
【1】具体解释请参考这篇博客:【这⾥添加⼀些详细⽰例,供⼤家理解】
a = 25  #⼆进制为 0001 1001
b = 36  #⼆进制为 0010 0100print(a&b)  #0
#按位与运算 ==> 0000 0000 (0的⼆进制)print(a|b)  #61
#按位或运算 ==> 0011 1101 (61的⼆进制)print(a^b)  #61
#按位异或运算 ==> 0011 1101 (61的⼆进制)print(a<<2) #100
#左移运算 ==> 0110 0100 (100的⼆进制)print(a>>2) #6
#右移运算 ==> 0000 0110 (6的⼆进制)print(~a)  #-26
#按位取反运算 ==> 1 0001 1010 (-26的⼆进制)print(~-a)  #24
#按位取反运算 ==> 0 0001 1000 ( 24的⼆进制)#注:最左边单独的⼀位数字是符号位,1为负,0为正
五、逻辑运算符
逻辑运算符与我们在数学⾥⾯学的‘且’‘或’‘⾮’⼗分类似,【1】返回值⼀般为布尔值。
名称符号描述备注
布尔
and同时为True则返回True,否则返回False
对两个对象进⾏操作布尔
or同时为False则返回False,否则返回True
布尔⾮not
若为True则返回False,若为False则返回
True
【2】对单个对象(或者⼀个整体)进⾏操作
【1】当操作对象是具体的数字的时候返回值是具体的数,and若第⼀个数判断为False则返回第⼀个数,否则为第⼆个数(⽆论第⼆个数的True与False),or若第⼀个数判断为True则返回第⼀个数,否则为第⼆个数(⽆论第⼆个数的True与False)如print(1 and 0)输出结果为0
【2】print(not(1 and 0))的输出结果为True,(1 and 0)是⽤括号括起来了,算是⼀个整体
六、成员运算符
所谓成员运算符,就是判断⼀个元素是否在⼀个【1】序列中。
符号描述简单⽰例备注
in 如果该元素在序列中就返回
True,否则返回False
print('1' in '123')#True
not in 如果该元素在序列中就返回
False,否则返回True
print('1' not in '123')#False in 在 not 的后
【1】这个序列可以是字符串、列表、元组、字典、集合、数组等(对于字典是判断是否存在键)
七、⾝份运算符
⾝份运算符⽤于【1】⽐较两个对象的存储单元(是否引⽤⾃同⼀个对象),⽽不是简单地⽐较两个对象的类型或值!
符号描述简单⽰例备注
is 判断两个对象的标识符是否引⽤⾃⼀个对
象,若是就返回True,否则为False,a is
b 等价于 id(a) == id(b)
print(1 is 1.0)#False
is not 判断两个对象的标识符是否引⽤⾃⼀个对
象,若是就返回False,否则为True,a is
not b 等价于 id(a) != id(b)
print([] is not [])#True
is 在
not 的
前⾯
【1】print([] is [])输出False,因为创建两个列表,它们的存储单元是不⼀样的,但是对于元组,如果元组中包含的元素⼀样,它与列表不同,它将输出True,但是会有⼀个SyntaxWarning
⼋、运算符优先级
不同的运算符有不同的优先级,这就好⽐我们在数学中学到的,乘⽅运算的优先级⼤于乘除法,乘除法的优先级⼤于加减法,有括号的先算括号⾥的,这三点在Python的运算符优先级规则⾥也是相同的,但在这之外,Python运算符优先级规则⾥还有⼀些规则,毕竟Python的运算符的数量还不少,不过还是建议在优先级不清晰的时候打上括号,便于阅读和理解。
运算符类型类型内优先级
算术运算符乘⽅ > 取余、整除、乘法、除法 > 加法、减法
⽐较运算符各运算符优先级相同
赋值运算符各运算符优先级相同
位运算符按位取反 > 左移、右移、按位与、按位或、按位异或
逻辑运算符布尔⾮ > 布尔与 > 布尔或
成员运算符各运算符优先级相同
⾝份运算符各运算符优先级相同
总运算符优先
(从⾼到低)乘⽅>按位取反>取余、整除、乘法、除法>加法、减法>左移、右移、按位与、按位或、按位异或>⽐较运算符>赋值运算符>⾝份运算符>成员运算符>布尔⾮>布尔与>布尔或
九、特别注意
这⾥会指出⼀些需要我们特别注意的地⽅。
序号描述涉及运算符
1整除运算符(//)是向下取整,⽽取整函数(int)是向零取整整除运算符
2对于正数的取余与数学上的取余没有区别,但是对于负数,Python⾥取余后要取绝对值取余运算符
3布尔⾮运算符的输出结果永远是True或者False,不像布尔与运算符和布尔或运算符布尔⾮
4字典与列表类似,创建时会新开辟⼀个内存空间⾝份运算符
5对于字典,成员运算符只会对字典的键进⾏判断成员运算符
6减法运算不能计算列表之差,但可以计算集合之差,因为集合⾥⾯没有重复元素减法运算
【兄弟们啊!原创不易啊!原创不易啊!各位点个赞,收个藏,分个享再⾛呗!】

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。