python - 了解 Python 多重赋值
问题描述
考虑这个赋值语句示例:
>>> x, y = x[y] = {}, None
>>> x
{None: ({...}, None)}
>>> y
>>>
分配的价值是什么x
?这个分配是如何工作的?
解决方案
该语句将最右侧的值分配给其左侧的每个目标,从左侧开始。因此,它相当于
t = {}, None
x, y = t
x[y] = t
所以,t
开始是一个由空dict
和值组成的元组None
。
接下来,我们解包t
并将每个部分分配给x
and y
:x
绑定到 empty dict
,并且y
绑定到None
。
最后,我们也可以将元组分配给x[y]
as,因为我们刚刚定义了x
和y
。键None
被添加到被dict
引用的x
对象中,它的值是原始元组。因此,我们x[y]
对自身进行了引用x
:一个循环!
Python 可以检测到这个循环,所以它显示dict
为{...}
,而不是试图将其无限扩展为{None: ({None: ({None: ...
。
推荐阅读
- graylog - JSON提取器和嵌套字段的问题
- javascript - 尝试嵌套 if else 语句以进行表单验证
- mysql - 在事件日志 AWS RDS MySQL 中找不到 MyISAM 表
- java - 为什么级联持久化不适用于 Hibernate 中的多对多关系?
- jmeter - JMeter CLI unix 脚本说明
- c++ - SFINAE:“enable_if”不能用于禁用此声明
- reactjs - source.uri 不应为空字符串
- python - 选择字典中的项目
- javascript - 给定值范围内的百分比
- c++ - 如何对从 unique_ptrs 中提取的非拥有原始指针向量进行建模?