http://www.cnblogs.com/lolein... 下面是这个文章里面所演示的代码,
>>> a=1
>>> b=1
>>> id(a)
40650152
>>> id(b)
40650152
>>> a=2
>>> id(a)
40650140
我有点费解的就是,按道理a和b完全就不是同一个变量,那么理论上他们无论值是什么,都应该是放在两个不同的内存空间啊,为什么他们相等的时候就放在了同一个内存空间呢?难道是python的运行时环境会自动判断他们的值,如果相同就放到同一个内存空间,为的是节省内存占用吗?
Python a un petit pool d'entiers lors de l'implémentation de int. Pour plus d'efficacité, Python crée d'abord ces entiers en interne, puis réutilise cette partie des entiers pour créer un int avec une valeur de 1. En fait, il prend 1 directement dans ce pool.
Généralement -5 à 257. Obtenez 1 000, 500 ou quelque chose comme ça et voyez. Ce ne sera plus le cas.
Regardez ceci :
Implémentation d'un objet entier Python
Le pool constant est utilisé pour l’optimisation des performances. Et ce n'est pas propre à Python, de nombreux autres langages utilisent des techniques similaires.
https://github.com/python/cpy...