了解 Python 多重赋值
Posted
技术标签:
【中文标题】了解 Python 多重赋值【英文标题】:Understanding Python multiple assignment 【发布时间】:2020-02-03 12:16:52 【问题描述】:考虑这个赋值语句示例:
>>> x, y = x[y] = , None
>>> x
None: (..., None)
>>> y
>>>
分配给x
的值是什么?这个分配是如何工作的?
【问题讨论】:
【参考方案1】:该语句将最右侧的值分配给其左侧的每个目标,从左侧开始。因此,它相当于
t = , None
x, y = t
x[y] = t
所以,t
一开始是一个由空的dict
和值None
组成的元组。
接下来,我们解压t
并将每个部分分配给x
和y
:x
绑定到空dict
,y
绑定到None
。
最后,我们也可以将元组分配给x[y]
,因为我们刚刚定义了x
和y
。键None
被添加到x
引用的dict
中,其值为原始元组。因此,我们让x[y]
引用x
本身:一个循环!
Python 可以检测到这个循环,因此它将dict
显示为...
,而不是尝试将其无限扩展为None: (None: (None: ...
。
【讨论】:
以上是关于了解 Python 多重赋值的主要内容,如果未能解决你的问题,请参考以下文章