我正在阅读有关如何在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,我只是指向那里,而不是另外一个"。
好奇!提前谢谢。
答案 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)