引用、变量和标识之间的关系

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

我在 Python 术语表或我的教科书中找不到术语“引用”、“变量”和“标识”的定义。我想澄清一下我对这些术语的理解。假设我们有一个对象

obj
。以下短语在 CPython 中是否是同义词:

  1. “对
    obj
    的引用”,“
    obj
    的身份”,“
    obj
    的内存地址”?
  2. “变量”、“命名引用”、“绑定到某个对象的标识符”?
  3. “引用
    a
    的变量
    obj
    ”,“由标识符
    a
    obj
    的身份组成的对”?
python reference cpython
1个回答
0
投票

变量是引用值的名称(即标识符)。

引用是我们可以用来访问值的任何东西。引用通常由表达式生成,例如,

  • 文字(
    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
    
    

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