文章详情页
c - 为什么python中值相等的两个变量会指向同一个内存地址?
浏览:222日期:2022-07-30 11:48:25
问题描述
http://www.cnblogs.com/lolein... 下面是这个文章里面所演示的代码,
>>> a=1>>> b=1>>> id(a)40650152>>> id(b)40650152>>> a=2>>> id(a)40650140
我有点费解的就是,按道理a和b完全就不是同一个变量,那么理论上他们无论值是什么,都应该是放在两个不同的内存空间啊,为什么他们相等的时候就放在了同一个内存空间呢?难道是python的运行时环境会自动判断他们的值,如果相同就放到同一个内存空间,为的是节省内存占用吗?
问题解答
回答1:Python实现int的时候有个小整数池。为了效率, Python首先在内心里创建出这些整数,然后复用了这部分整数,创建一个值为1的int,其实直接从这个池里拿出1。一般是-5到257。你弄个1000 500啥的看看。就不会这样了。看看这个:python整数对象实现
回答2:为了性能上的优化而使用了常量池。而且这也不是 python 独有的,很多其他语言也使用了类似的技巧。
回答3:https://github.com/python/cpy...
相关文章:
1. docker容器呢SSH为什么连不通呢?2. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?3. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题4. 请问“由于 Cookie “PHPSESSID”的“SameSite”属性设置为“None”,但缺少“Secure”属性,此 Cookie 未来将被拒绝。”请问出现这个问题怎么办?5. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~6. docker api 开发的端口怎么获取?7. golang - 用IDE看docker源码时的小问题8. docker start -a dockername 老是卡住,什么情况?9. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?10. docker网络端口映射,没有方便点的操作方法么?
排行榜

网公网安备