id' 在 Python 中是个坏变量名

208 投票
9 回答
77134 浏览
提问于 2025-04-11 09:23

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

9 个回答

63

我可能要说一些不太受欢迎的话:id() 是一个比较特殊的内置函数,在实际的业务逻辑中很少用到。因此,我觉得在一个结构紧凑、写得很好的函数里使用它作为变量名没有问题,因为在那种情况下,很明显这个 id 并不是指那个内置函数。

118

PEP 8 - Python 代码风格指南中,有一段指导意见出现在描述性:命名风格的部分:

  • single_trailing_underscore_:根据约定使用这个后缀,以避免与Python的关键字冲突,例如:

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

所以,来回答这个问题,一个符合这个指导的例子是:

id_ = 42

在变量名中加上这个后缀下划线,可以让人更清楚地理解这个变量的用途(对于那些熟悉PEP 8指导的人来说)。

193

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.)

一般来说,使用与关键字或内置函数同名的变量名是个坏主意,即使这样做是被允许的。

撰写回答