python - getrefcount 的值
问题描述
我有代码,我试图推断一个对象相对于它们的内存位置的引用计数。我的理解是一个变量是由它的内存地址引用的,它基本上给了我们传递给它的值。如果我在这里错了,请纠正我。
现在,我得到的让我感到困惑,这是带有以下输出的代码:
>>> import sys
>>> a = [1,2,3]
>>> id(a)
1920192000520
>>> sys.getrefcount(a)
8
>>> b = a
>>> b
[1, 2, 3]
>>> sys.getrefcount(b)
23
我已经调用了一次这些变量(即没有先前的声明或没有其他引用),所以不确定为什么内存中的同一对象有更高的值,例如 8、23。
虽然我在传递实际内存 ID 时看到该值是正确的,但我得到的值为 1
>>> sys.getrefcount(id(a))
1
>>> sys.getrefcount(id(b))
1
为什么会有区别,有人可以阐明这个概念吗?
非常感谢。
解决方案
推荐阅读
- database - 执行将使集合大小加倍的迁移
- delphi - FMX 框架中等效的 Application.ExeName
- google-apps-script - 谷歌表格脚本 - 对于范围 1 中的每个使用的单元格,如果单元格值存在于范围 2 中,则获取范围 2 匹配的行号
- python - views.py django 应用程序中的子进程不起作用?
- asp.net-mvc - Twilio RequestValidation 示例的 ActionFilterAttribute 不起作用 - 为什么?
- ios - 为什么带有 Swift 5.5 工具链的 Firebase Firestore 会产生错误?
- git - 带有动态注释的批处理脚本 git commit
- python - Tkinter - 调整框架大小后,网格和打包方法不起作用
- reactjs - 用 api 反应应用程序。删除列表项不起作用
- dataframe - 如何通过加入 2 个 20TB 的表来优化 Spark 以将数据写入 s3