【问题标题】:Is it OK to call all references variables (and the other way around) in Python?在 Python 中调用所有引用变量(反之亦然)是否可以?
【发布时间】:2014-07-26 09:30:57
【问题描述】:

Python中是否所有引用变量和所有变量都引用?

显然,变量和引用之间存在差异,例如C++ 但是 Python 呢?

【问题讨论】:

  • 我不得不说我很难理解这个问题。你能举一些例子来说明你的确切意思吗? Python 和 C++ 示例都会有所帮助。
  • C++中有所谓的“引用变量”,绝对可以称为变量和引用。一个例子: int a = 5; int& ref = a; 不过,并非所有变量都是 C++ 中的“参考变量”。我一直想知道在 Python 中是否存在一些“变量”和“引用”术语不会重叠的特殊情况

标签: python variables programming-languages pass-by-reference nomenclature


【解决方案1】:

尽管 Python 文档也混合了这些术语,但参考文档使用术语 identifiers or names 而不是 变量。但这是相同的概念。

所有标识符都是引用; Python 中的所有 都是对象,其生命周期由对这些对象的引用数量决定;引用计数降至 0 的对象将被清理。

但是,并非所有引用都是标识符。列表索引也是引用,字典中的键和值以及对象的属性也是如此。

【讨论】:

  • 我不确定我是否同意第一个说法。例如,docs.python.org/2/library/functions.html 反复使用术语“变量”。
  • 是的,我赞同这一点。 Python(官方资源和所有技能水平的许多社区成员)使用术语“变量”,无论好坏。如果他们不这样做可能会更好,但是哦。
  • @NPE:啊,是的,文档不一致。我会改变它。
  • 答案中缺少的是所有标识符 都是 引用的明确声明。 Python 没有像 Java 的 int(或其他任何名称)那样的“原始值”类型。
  • “Python 中的所有值都是对象” 我会说 Python 中的所有值都是指向对象的指针。 “对象”不是值。 “值”是对表达式求值的结果,并且与该表达式的类型具有相同的类型。像 Python 这样的动态类型语言可以被认为具有一种静态(编译时)类型。这是什么类型的?变量是表达式; Python 中的变量和其他表达式具有引用(指向对象的指针)类型。因此,这些值还必须具有引用(指向对象)类型。 Python 在语义上与 Java 中的引用类型相同。
猜你喜欢
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2020-07-10
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多