Python运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 例如,我们常说的先执行相乘和除,再执行加减运算。
下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,然后运算符的优先级是运算表达式从左到右。
优先级 | 运算符 | 描述 |
---|---|---|
1 | lambda | Lambda表达式 |
2 | or | 布尔“或” |
3 | and | 布尔“与” |
4 | not x | 布尔“非” |
5 | in,not in | 成员测试 |
6 | is,is not | 同一性测试 |
7 | <,<=,>,>=,!=,== | 比较 |
8 | | | 按位或 |
9 | ^ | 按位异或 |
10 | & | 按位与 |
11 | <<,>> | 移位 |
12 | +,- | 加法与减法 |
13 | *,/,% | 乘法、除法与取余 |
14 | +x,-x | 正负号 |
15 | ~x | 按位翻转 |
16 | ** | 指数 |
17 | x.attribute | 属性参考 |
18 | x[index] | 下标 |
19 | x[index:index] | 寻址段 |
20 | f(arguments...) | 函数调用 |
21 | (experession,...) | 绑定或元组显示 |
22 | [expression,...] | 列表显示 |
23 | {key:datum,...} | 字典显示 |
24 | 'expression,...' | 字符串转换 |
一般情况下,运算符优先级表决定了哪个运算符在别的运算符之前计算。但是,如果你想要改变它们默认计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(10 + 55) * 13的样子。
Python运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 + 3 + 4被计算成(2 + 3) + 4。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c被处理为a = (b = c)。
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
# coding=utf-8 #优先级的简单实例 priorityNumber=2+1*4 print priorityNumber #输出结果:6 #优先级使用实例 #以下优先级排名从高到低,在同一运算中,先执行优先级高的再执行低的,以此类推。 #Top 1:函数调用、寻址、下标 #Top 2:幂运算** priorityNumber=2*2**3 print priorityNumber #输出结果:16 #Top 3:翻转运算~ #Top 4:正负号 print 1+2*-3 #输出结果:-5 #Top 5:*、/、% print 2+1*2/5 #输出结果:2 #Top 6:+、- print 3<<2+1 #输出结果:24 #Top 7:<<、>> #Top 8:按位&、^、| #Top 9:比较运算符 priority=2*3+2<=2+1*7 print priority #输出结果:True #Top 10:逻辑的not and or #Top 11:lambda表达式 2.python运算符优先级使用规律: #python优先级使用规律 #1、一般情况下是左结合的 #ps:在没有更高优先级运算符,即只有同级运算符时时从左到右结合 print 1+2+3*5+5 #输出结果:23 #2、出现赋值的时候一般是右结合 #ps:在有赋值运算符时,是右结合,即先算出1+2的值以后再赋值给priority priority=1+2 print priority #输出结果:23
大家可能会觉得Python运算符的优先级不容易记忆,而且有时候还容易混淆。在实际运用中根据业务逻辑可能我们知道要先做什么再做什么,但是却忘记Python运算符的优先级了,该怎么办?这里教大家一个杀手锏,绝对百试不爽。
#python运算符优先级大招 '''比如说有这个需求: 去商店买水,买3瓶水,每瓶5块,再买一个绿箭(假设绿箭3块),总共多少钱? 这个简单的应用非常明显,需要先用乘法再用加法,如果这里你忘记了乘法和加法的优先级,可以这样: ''' print (3*5)+3 #输出结果:18 #ps: 这只是一个简单的例子,只是为了告诉大家实际应用中实在不行咱就放大招。有备无患。 Python表达式 Python表达式基本概念: python中,值、变量和运算符共同组成的整体称为表达式 #python表达式 #1 字符串表达式 "Hello" #2 计算表达式 2+3 #3 赋值表达式 first=0 #4 变量表达式 first #5 值表达式 #等等
所以在我们非常清楚Python运算优先级的前提下,最好运算符的书写的时候,还是要以圆括号来标记优先级,这样可读性强,也是一个良好的编程习惯。
综合技术交流:点击加入--> [SO JSON官方交流①群][收费]
综合技术交流:点击加入--> [SO JSON官方交流②群][免费]
要求:不能发广告、暴力、政治、付费教程,违者直接踢出。
备注:入群费用5元,没有QQ钱包,可以先支付宝
or 微信
扫码支付5元赞助后,我拉您进去。QQ联系我。
扫码赞助:赞助二维码。
技术交流QQ群:①群259217951,②群166848545
站长邮箱:so@sojson.com
对页面内容有任何疑问和建议,请联系我们。
所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看
正在加载... ...