c - 为什么python中值相等的两个变量会指向同一个内存地址?

 暧gx祢生 发布于 2022-10-25 07:29

http://www.cnblogs.com/lolein... 下面是这个文章里面所演示的代码,

>>> a=1
>>> b=1
>>> id(a)
40650152
>>> id(b)
40650152
>>> a=2
>>> id(a)
40650140

我有点费解的就是,按道理a和b完全就不是同一个变量,那么理论上他们无论值是什么,都应该是放在两个不同的内存空间啊,为什么他们相等的时候就放在了同一个内存空间呢?难道是python的运行时环境会自动判断他们的值,如果相同就放到同一个内存空间,为的是节省内存占用吗?

3 个回答
  • https://github.com/python/cpy...

    2022-10-26 14:27 回答
  • 为了性能上的优化而使用了常量池。而且这也不是 python 独有的,很多其他语言也使用了类似的技巧。

    2022-10-26 14:27 回答
  • Python实现int的时候有个小整数池。为了效率, Python首先在内心里创建出这些整数,然后复用了这部分整数,创建一个值为1的int,其实直接从这个池里拿出1。
    一般是-5到257。你弄个1000 500啥的看看。就不会这样了。
    看看这个:
    python整数对象实现

    2022-10-26 14:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有