Python:一行中的多个分配如何工作?


问题内容

我知道赋值是Python中的一条语句,即,赋值不像表达式那样求值。那么,以下代码行如何在Python中工作?请说明Python解释器内部发生的情况(词法分析,语法分析,抽象语法树的形成)。

# this works
spam = eggs = 'ham'

# this doesn't work. Throws SyntaxError
spam = (eggs = 'ham')

问题答案:

为什么上面的第一行有效,而第二行却无效?

这与运算符优先级无关。这是一种指定的语法。不能通过添加括号来“协调”它。

现在要获得完整答案(如@Rob的注释已表明),请参见此处此处