it-swarm.cn

'id'是Python中的一个错误的变量名

为什么在Python中命名变量id是不好的?

113
brian buck

id()是一个基本的内置:

模块__builtin__中的内置函数id的帮助:

id(...)

    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it's the object's memory
    address.)

通常,使用Eclipse的关键字或任何语言的内置函数的变量名称都是一个坏主意,即使它是允许的。

119
Kevin Little

id是一个内置函数,它给出了一个对象的内存地址。如果你命名一个函数id,你将不得不说__builtins__.id来获取原始函数。除了小脚本之外,全局重命名id令人困惑。

但是,只要使用本地名称,重复使用内置名称作为变量并不是那么糟糕。 Python有一个 很多 内置函数,(1)有通用名称,(2)你不会使用太多。使用这些作为局部变量或作为对象的成员是可以的,因为从上下文中可以明显看出您正在做什么:

例:

def numbered(filename):
  file = open(filename)
  for i,input in enumerate(file):
    print "%s:\t%s" % (i,input)
  file.close()

一些具有诱人名字的内置插件:

  • id
  • file
  • list
  • map
  • allany
  • complex
  • dir
  • input
  • slice
  • buffer
48
Nathan Shively-Sanders

PEP 8 - Python代码样式指南 ,以下指南出现在 描述:命名样式

  • single_trailing_underscore_:按惯例用于避免与Python关键字冲突,例如.

    Tkinter.Toplevel(master, class_='ClassName')

因此,要回答这个问题,应用此指南的示例是:

id_ = 42

在变量名中包含尾随下划线使得意图清晰(对那些熟悉PEP 8中的指导的人)。

41
DavidRR

我可能会说一些不受欢迎的东西:id()是一个相当专业的内置函数,很少用于业务逻辑。因此,我没有看到在一个紧凑且编写良好的函数中将它用作变量名的问题,其中很明显id并不意味着内置函数。

40
Sebastian Rittau

在内置函数之后命名任何变量是不好的。其中一个原因是因为对于不知道名称被覆盖的读者而言可能会让人感到困惑。

4
Toni Ruža

'id'是Python中的内置方法。将值分配给“id”将覆盖该方法。最好在“some_id”之前使用标识符,或者在不同的大小写方法中使用它。

内置方法接受一个参数,并为您传递的对象的内存地址返回一个整数。

>>>id(1)

9787760

>>>x = 1

>>>id(x)的

9787760

1
brian buck

因为它是内置函数的名称。

1
ahockley