recherche

Maison  >  Questions et réponses  >  le corps du texte

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的运行时环境会自动判断他们的值,如果相同就放到同一个内存空间,为的是节省内存占用吗?

天蓬老师天蓬老师2787 Il y a quelques jours523

répondre à tous(3)je répondrai

  • 迷茫

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

    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

    répondre
    0
  • 黄舟

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

    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.

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:36:11

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

    répondre
    0
  • Annulerrépondre