来自 Java,我很难理解 Python 中对象是如何分配的。 考虑这个 Python 脚本:
x = ("a", "b")
y = ("a", "b")
print(x is y) # True
x = ["a", "b"]
y = ["a", "b"]
print(x is y) # False
在类似于Java的语言中,new关键字确保创建具有另一个内存位置的新实例。 但我假设这里的情况并非如此。那么如何解释这种行为呢? Python 中是否有任何类型的不可变类型池来防止重复文字?
我猜想 Python 会跟踪不可变类型,因为相同的情况对于字符串、复数和其他不可变对象返回 True。但如果是这样,为什么还要麻烦呢?
Python 中是否有任何类型的不可变类型池来防止重复文字?
基本上是的。