"大" Python中的数字

时间:2016-12-09 04:34:39

标签: python

我正在阅读有关如何在Python中表示整数的一些内容。我发现这篇文章非常简洁(http://www.laurentluce.com/posts/python-integer-objects-implementation/),它解释了所有内容的设置,以及" small"数字(-5到256)基本上是在程序开始时以大数组的形式免费创建的,所以如果我有

x = 5 y = 5

x和y都指向在程序开始时创建的同一个通用5对象。本文给出了一个示例,如果将x或y设置为300(超出小数范围),则只需在下一个代表300的可用空间块中创建一个新整数。

这是否意味着如果我将x和y都设置为300,那么他们都知道指向相同的300? 5这是有意义的,因为你可以直接索引到负数的偏移量的特殊小整数数据结构,但由于任何大于这个的数字是任意创建的,有没有办法让Python知道"哦是的,我刚做了一个300,我只是指向那里,而不是另外一个"。

好奇!提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果完成,编译器会处理它:

import dis

def f():
  a = 300
  b = 300

dis.dis(f)

print f.__code__.co_consts

每次注意LOAD_CONST的参数:

  4           0 LOAD_CONST               1 (300)
              3 STORE_FAST               0 (a)

  5           6 LOAD_CONST               1 (300)
              9 STORE_FAST               1 (b)
             12 LOAD_CONST               0 (None)
             15 RETURN_VALUE        
(None, 300)