首页 > 解决方案 > 了解 Python 多重赋值

问题描述

考虑这个赋值语句示例:

>>> x, y = x[y] = {}, None
>>> x
{None: ({...}, None)}
>>> y
>>>

分配的价值是什么x?这个分配是如何工作的?

标签: pythonpython-3.xassignment-operator

解决方案


该语句将最右侧的值分配给其左侧的每个目标,从左侧开始。因此,它相当于

t = {}, None
x, y = t
x[y] = t

所以,t开始是一个由空dict和值组成的元组None

接下来,我们解包t并将每个部分分配给xand y:x绑定到 empty dict,并且y绑定到None

最后,我们也可以将元组分配给x[y]as,因为我们刚刚定义了xy。键None被添加到被dict引用的x对象中,它的值是原始元组。因此,我们x[y]对自身进行了引用x:一个循环!

Python 可以检测到这个循环,所以它显示dict{...},而不是试图将其无限扩展为{None: ({None: ({None: ...


推荐阅读