操作符优先级
Python 表达式语句中操作符的优先顺序从最低优先级(最后绑定)到最高优先级(最先绑定)如下:
:=
赋值表达式lambda
lambda 表达式if -- else
条件表达式or
布尔逻辑或 ORand
布尔逻辑与 ANDnot x
布尔逻辑非 NOTin
,not in
,is
,is not
,<
,<=
,>
,>=
,!=
,==
比较运算|
按位或 OR^
按位异或 XOR&
按位与 AND<<
,>>
移位+
,-
加和减*
,/
,//
,%
乘,矩阵乘,除,整除,取余+x
,-x
,~x
正,负,按位非 NOT**
乘方(右边的先绑定)await x
await 表达式x[index]
,x[index:index]
,x(arguments...)
,x.attribute
抽取,切片,调用,属性引用(expressions...)
,[expressions...]
,{key: value...}
,{expressions...}
绑定或加圆括号的表达式,列表显示,字典显示,集合显示
一个表达式语句中可以有多个上述操作符,最终返回一个值(包括返回值为 None 的函数调用)。
而赋值语句中的赋值操作符 =
,+=
,-=
,*=
,/=
,//=
,%=
,&=
,|=
,^=
,>>=
,<<=
,**=
,在操作符中优先级最低,它右边表达式的值计算完之后,才最后绑定到左边的名称。
举例如下:
value = int('2')**(-1) == 2/(3+1)
value
True
int('2')**(-1) == 2/(3+1)
True
[].append(1) is None and not 1 - 1
True
value = 1 if 'a' in 'a b c'.split()[1:3] else 2
value
2
value **= 3 + 2 * 1
value
32
操作符 =
可以用来连续赋值:
a = b = c = 1
a,b,c
(1, 1, 1)