创建一个 class 的实例 N 次而不将其分配给变量
Create an instance of a class N times without assigning it to a variable
CPython 3.8
class Class: pass
s = set(
id(Class())
for _ in range(5)
)
len(s) == 1 # True
这似乎是一种解释器魔法,肯定与垃圾收集有关。它是特定于 CPython 的,不受任何标准行为的保证吗?
给定两个不同的对象 x
和 y
(即,x is y
为假),只有 x
的生命周期才能保证 id(x) != id(y)
和 y
重叠。如果它们不重叠(如此处的情况),则 id(x) == id(y)
或 id(x) != id(y)
都不需要为真。一个或另一个将是,基于实施,但没有一个或多或少比另一个更“正确”。
CPython 3.8
class Class: pass
s = set(
id(Class())
for _ in range(5)
)
len(s) == 1 # True
这似乎是一种解释器魔法,肯定与垃圾收集有关。它是特定于 CPython 的,不受任何标准行为的保证吗?
给定两个不同的对象 x
和 y
(即,x is y
为假),只有 x
的生命周期才能保证 id(x) != id(y)
和 y
重叠。如果它们不重叠(如此处的情况),则 id(x) == id(y)
或 id(x) != id(y)
都不需要为真。一个或另一个将是,基于实施,但没有一个或多或少比另一个更“正确”。