python 值相同变量名不同,内存地址相同吗?

_firemoon 2017-09-23 07:21:18

如图,为什么有的相同,有的不同,原因是什么,有没有阈值
...全文
1718 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱奔跑的孩子 2019-11-16
  • 打赏
  • 举报
回复
python缓存了-5~~256 的整型数组 同意楼上
QuantumEnergy 2017-09-29
  • 打赏
  • 举报
回复
建议去看看python的缓存机制
G_scsd 2017-09-27
  • 打赏
  • 举报
回复
在python3.0中,python中缓存了0到255的数字,所以在这范围内的字面值的变量的地址都一样
CDSoftwareWj 2017-09-25
  • 打赏
  • 举报
回复
楼上说的比较清楚了,python会提前分配一些常用的值来提高效率,具体可以看《Python 源码剖析》 里面讲的非常清楚
python_T 2017-09-24
  • 打赏
  • 举报
回复
小整数对象池:python在执行的时候,为了节约空间,帮我们创建好了小整数对象池,[-5~256],都是固定的地址,不管你用不用,都会存在。 比如,a=5,b=5,id(a)和id(b)的地址都是小整数池中固定已经存在的地址,所以相等 但如果,a=1000,b=1000,这时会给a一个地址,也会给b一个地址,但他们都不相等。 希望可以帮助你~
混沌鳄鱼 2017-09-23
  • 打赏
  • 举报
回复 1
Python 解释器对于数字有个小数字缓存池:-5~257, 原因是:地址数据最少是32位的,现在都是64位了,如果单独为一个小整数创建一个对象,10个地方用到这个小整数,那么就会在内存中创建10个存储的内存地址的空间,地址占用的数据长度比数据本身还大这样非常不划算。而有这个缓存池,python解释器内部就会共享这个小整数对象,不去开内存空间。从而减少内存的使用率,降低浪费。) 字符串也有内存池,给了2k空间,python内部有算法,按照内部权重排列,如果级别高了就把你放入内存。列表、字典都有。
chuifengde 2017-09-23
  • 打赏
  • 举报
回复
常数超过256,id就不一样了

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧