搜尋

首頁  >  問答  >  主體

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

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

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

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

天蓬老师天蓬老师2788 天前526

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-04-18 10:36:11

    Python實現int的時候有個小整數池。為了效率, Python首先在內心創建出這些整數,然後復用了這部分整數,創建一個值為1的int,其實直接從這個池裡拿出1。
    一般是-5到257。你弄個1000 500啥的看看。就不會這樣了。
    看看這個:
    python整數物件實作

    回覆
    0
  • 黄舟

    黄舟2017-04-18 10:36:11

    為了效能上的最佳化而使用了常數池。而且這也不是 python 獨有的,許多其他語言也使用了類似的技巧。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 10:36:11

    https://github.com/python/cpy...

    回覆
    0
  • 取消回覆