python - 为什么即使定义了新变量,大数字也只显示两个引用?
问题描述
当我在 sys 模块中使用 getrefcount 方法并尝试计算某些大数的引用(在本例中为 1000000)时,它显示了两个引用。现在我知道这两个引用可以被 IDLE 或 python 本身使用(根据本书)但是当我引入一个变量 a = 1000000 它应该显示 3 个引用但仍然显示 2。知道为什么会发生这种情况吗?
>>> import sys
>>> sys.getrefcount(1000000)
2
>>> a = 1000000
>>> sys.getrefcount(1000000)
2
解决方案
您似乎在假设每次1000000
在代码中都引用同一个对象。事实并非如此。
您的代码中包含三个不同的、不相关的1000000
对象:
In [1]: id(1000000)
Out[1]: 4328822600
In [2]: id(1000000)
Out[2]: 4328822504
如果您尝试使用一个小整数,那么那些会被实习(至少由我的解释器),因此引用计数确实会增加:
In [7]: sys.getrefcount(3)
Out[7]: 284
In [8]: a = 3
In [9]: sys.getrefcount(3)
Out[9]: 287
推荐阅读
- github - 如何判断 GitHub 上哪些分叉领先?
- javascript - 如果有人在linkedin上发帖,如何获得通知。是否有任何 webhook APIslinkedIn 提供
- android - Android WebView 有时不会在初始页面加载时发送请求标头
- c++ - 我可以在不使用原始指针的情况下避免在 std::initializer_list 初始化期间进行复制吗?
- azure - Azure 数据工厂和 SharePoint
- python - 金字塔“模型”也是金字塔“资源”吗?
- java - java.lang.NoSuchMethodError:Lcom/google/android/gms/common/zzc 类中没有静态方法 zza(Landroid/content/Context;)V;它的超类
- javascript - 如何将childNode添加到javascript中的元素
- google-cloud-platform - 具有 Bitbucket IP 白名单的 Google Source 外部存储库
- spring-mvc - 面向服务和三层架构在一起?