首页 > 解决方案 > 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

为什么会有区别,有人可以阐明这个概念吗?

非常感谢。

标签: python

解决方案


推荐阅读