提问者:小点点

Python如何知道之前创建了一个整数对象,并且给出了相同的引用(甚至对于值>256)?


例如

a = 12345  # id(a) = 140127713009936
a = 6789  # id(a) = 140127713010448
b = 12345  # id(b) = 140127713009936

Python怎么可能记得以前创建过值为12345的整数对象,并给出它的引用,而不是创建新对象呢? 我理解它是如何对值-5到256工作的,但为什么它甚至能对更大的数字工作(也能对字符串工作,尽管我不知道是否是相同的机制)?


共2个答案

匿名用户

在python中(出于优化原因),如果您有两个具有相同值的对象,则所有内容都是一个指针,因此,python将为每个对象放置一个指针,指向包含该值的相同位置。

参见:https://realpython.com/pointers-in-python/

python如何知道对象是否是早期创建的:python将每个对象的名称映射到值存在的内存地址。

如果该值还不存在,python将创建一个新值。

希望你发现这对你有帮助!

匿名用户

它更有可能是动态创建的,或者您可以说它是惰性评估的。