了解 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并将每个部分分配给xyx绑定到空dicty绑定到None

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

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

【讨论】:

以上是关于了解 Python 多重赋值的主要内容,如果未能解决你的问题,请参考以下文章

Python 多重赋值和引用

python 之 赋值和拷贝(你真的了解吗)

Python中的多重赋值和评估顺序

将 C++ 转换为 Python(For 循环多重赋值)

Julia:了解 OOP 的多重调度

多重赋值语义