python学习之运算表达式优先级

python中,有变量、值和运算符参与的语句叫做表达式。

比如:

#字符串表达式
"hello"
#运算表达式
2+3
#赋值表达式
test  = "hello"
#变量表达式
test

运算符优先级

运算符描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换

 关于移位操作

右移:右移一位表示除以2

>>> 8>>2
2
>>> 8>>3
1
>>> 8>>4
0

这里,移位数是>>右边的数,被移位数是>>左边的数。

左移:左移一位表示乘以2

>>> 3<<4
48

这里,移位数是<<右边的数,被移位数是<<左边的数。

总结:移位数总是位于移位符号(<<或者>>)的右边被移位数总是位于移位符号的左边

优先级

运算符优先级按照上表由低到高

其他优先级如下:

#以下优先级排名从高到低,在同一运算中,先执行优先级高的再执行低的,以此类推。

#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表达式

一般操作,由左到右;赋值操作,由右到左

>>> a = 1+3
>>> a
4

`a = b or c`与`a = (b or c)`等效。

括号优先操作

>>> b = (1+2)*3
>>> b
9
原文地址:https://www.cnblogs.com/leomei91/p/7614332.html