为何赋值运算符及其变体未出现在Python运算符优先级表中?
Python赋值运算符(=、+=等)的优先级及未出现在官方优先级表的原因
一、赋值运算符的优先级
=、+=、-=、*=这类赋值运算符的优先级是所有Python运算符里最低的,比赋值表达式:=还要低。- 这意味着在包含赋值运算符的代码中,会先执行所有其他优先级更高的运算,最后才执行赋值操作。比如:
a = 2 + 3 # 先计算2+3得到5,再把结果赋值给a b *= 4 + 1 # 先计算4+1得到5,再执行b = b*5的操作 - 另外,赋值运算符是右结合的,链式赋值会从右往左执行:
x = y = 10 # 先执行y=10,再把y的结果赋给x
二、未出现在官方优先级表的原因
Python官方文档的运算符优先级表只收录表达式类运算符,而=、+=这类属于赋值语句,并非表达式:
- 表达式是能返回一个值的代码片段,比如
2+3、x > 5、a := 10都属于表达式,可以直接作为其他操作的一部分(比如放在if条件判断里)。 - 但
a = 10是赋值语句,它的作用是修改变量的值,不会返回结果(在Python中,试图把赋值语句当作表达式使用会报错,比如if (a=10):会触发语法错误)。 - 正因为赋值语句不属于表达式范畴,所以不会被列在那个针对表达式的优先级表里;而
:=作为赋值表达式,能返回值,因此被收录其中。
内容的提问来源于stack exchange,提问作者proprogrammer
相关产品推荐
相关产品推荐

