论《Python"整数缓冲区"》

版权声明:秉承开源精神,博主博文可以随机转载,但请注明出处! https://blog.csdn.net/zisefeizhu/article/details/89161403

很有意思的一个问题!

今天在回看Python数字类型时,从某位博主的博文中发现了这么一句:Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。

我一看,呀还有这么一回事吗?然后看到他后面还有一个例子呢

>>> a = 1000000
>>> id(a)
45818160
>>> del a       # 删除变量a
>>> b = 1000000
>>> id(b)
45818160

然后还带了一个结论:上面,我给变量a赋值了整数1000000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为1000000,再次看下b的内存地址,和以前a存在的是一样的。

而且还有这么一句重要提示:这一段内容,可能感觉没什么大用,但它对于理解Python的运行机制有很大帮助。

呀呀呀真的吗?还有这么一回事,然后我自己测试了一下:

还真是哈

但是在帅龙的指导下

然后又测试了一下

问题出来了,既然那博主说是“整数保存在内存地址中,且删除这个整数,再创建这个整数还是原来的内存地址”,可是我这里明明创建的对象c却远远大于a,b。可是内存地址却一样。这说明了那博主的结论是不对的!!

那怎么算对呢?我给一张静态图(PS:你要联想成一张动态图,结合最后一段的语义)

这里牵扯到了:Python中一切皆对象 ,内存中数据的存放,内存与数据的关系,删除数据只是删除了数据指向内存的指针(有LINUX基础的可以联想一下Linux的软硬连接)

扫描二维码关注公众号,回复: 6157472 查看本文章

虽然那段数值也不会被删除,但仅仅只是放在那里,会被后续创建的对象覆盖,至于你前后使用两个完全相同的整数是否会重用那个数值我也不知道

猜你喜欢

转载自blog.csdn.net/zisefeizhu/article/details/89161403
今日推荐