我在 Python 术语表或我的教科书中找不到术语“引用”、“变量”和“标识”的定义。我想澄清一下我对这些术语的理解。假设我们有一个对象
obj
。以下短语在 CPython 中是否是同义词:
obj
的引用”,“obj
的身份”,“obj
的内存地址”?a
的变量obj
”,“由标识符a
、obj
的身份组成的对”?变量是引用值的名称(即标识符)。
引用是我们可以用来访问值的任何东西。引用通常由表达式生成,例如,
5
、'x'
等)x
)x[5]
)x and y
, x + y
)f(x)
)“身份”有两种相关的使用方式。
对象的标识是与该对象存在时关联的与实现相关的整数。您可以使用
id
函数来检索给定对象的任何引用的标识。 (id(3)
、id(x)
、id(x[4)
、id(y + 3*z)
等)
如果两个引用都引用同一个对象,而不仅仅是两个相等的对象,那么我们说它们是“相同的”。我们可以肯定地说x is y
在
之后是正确的
x = 3
y = x
但不是
x = 3242
y = 3242
因为不能保证相同的文字始终是对同一对象的引用。 (尽管在 CPython 中,例如,小整数被保留。
x = 3; y = 3; x is y
通常为 true,但不能保证像
x + 3* y is 5
这样更复杂的表达式为 true,即使 x + 3 * y == 5
。