Python 中的内存管理如何处理整数?

问题描述 投票:0回答:1

以下两个示例的结果不同:

示例1

a = 845
b = int("8"+"4"+"5")

print(a == b) # True
print(a is b) # False

示例2

a = 845
b = 840+5

print(a == b) # True
print(a is b) # True

如何解释?为什么在第一种情况下,相同的整数被保存在堆中的两个不同的内存槽中?

我预计这两种情况的结果是相同的(正确)。

python memory-management
1个回答
-1
投票

在第一个变量中,您对内存槽中的整数使用隐式集合,在某些情况下,相同的值在内存中共享相同的位置,但在第二个变量中,您显式创建了一个新的 int 对象,因此它将被设置在一个新的对象中内存插槽。

© www.soinside.com 2019 - 2024. All rights reserved.