栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“ sys.getrefcount()”返回值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“ sys.getrefcount()”返回值

大整数对象不会被解释器重用,因此您将获得两个不同的对象:

>>> a = 11111>>> b = 11111>>> id(a)40351656>>> id(b)40351704

sys.getrefcount(11111)始终返回相同的数字,因为它测量的是新对象的引用计数。

对于小整数,Python始终重用同一对象:

>>> sys.getrefcount(1)73

通常,您只会获得一个对新对象的引用:

>>> sys.getrefcount(object())1

但是整数是由Python在一个特殊的预分配区域中分配的,用于性能优化,我怀疑额外的两个引用与此有关。

您可以在此处查看C的实现:http
:
//svn.python.org/view/python/trunk/Objects/intobject.c?view=markup

编辑:我并不是声称要了解底层细节中发生的事情,我认为有一些工作在缓存临时引用:

print sys.getrefcount('foo1111111111111' + 'bar1111111111111') #1print sys.getrefcount(111111111111 + 2222222222222) #2print sys.getrefcount('foobar333333333333333333')   #3


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号