python - 将 dict 值设置为自身会创建无限副本

最近看到一段代码看不懂。这是示例:

a = {}
a['value'] = a

print(a)
>>>> {'value': {...}}

因此,这会创建无限数量的初始字典副本,类似于:

{
    'value': {
      'value': {
        'value': {
                  ...
        }
      }
    }
}

那么,为什么会这样呢?这是某种递归的东西吗?

最佳答案

您的代码不会复制任何内容。 Python 知道你的变量是递归的,也就是说,它引用自己,并且不会永远打印相同的东西。相反,它通过编写 ... 来打破循环引用。

您可以使用 is 关键字确定 a["value"] 确实不是您字典的副本:

>>> a = {}
>>> a["value"] = a
>>> a["value"] is a # they are the same object
True
>>> 

https://stackoverflow.com/questions/65497847/

相关文章:

powershell - 在 switch 语句中分配变量

c++ - fatal error LNK2019 C++,Unreal Engine Build

git - 如何为 gerrit 事件配置 Gerrit Webhooks

android-studio - flutter SDK 不完整

reactjs - 接口(interface)命名约定(接口(interface)名称与组件名称冲突

python - 根据所选列过滤重复的行并与 Pandas 中的另一个数据框进行比较

python - 功能测试没有按预期进行(AoC 第 4 天的一部分)

firebase - Flutter Firestore 离线数据库

c++ - 在模板参数中,哪些规则允许编译器推断数组的项数?

r - 如何检查 data.table 各行中的值是否相同