Python文件名的下划线前缀是什么?

2022-04-12 00:00:00 python naming-conventions prefix

问题描述

cherryPy为例,有如下文件:

  • __init__.py
  • _cptools.py

它们有什么不同?这意味着什么?


解决方案

__...__表示保留的名称(包括文件名和其他名称)。您不应使用双下划线表示法为编造您自己的名称;如果您使用现有名称,则它们具有特殊功能。

在这个特定的示例中,__init__.py定义了包的‘main’单元;它还会导致Python将特定目录视为一个包。它是您调用import cherryPy时使用的单位(cherryPy是一个目录)。这在Modules tutorial中有简要说明。

另一个示例是__eq__方法,它为类提供相等比较。您可以直接调用这些方法(例如,当您使用==运算符时,您可以隐式使用它们);然而,更新的Python版本可能定义更多这样的方法,因此您不应该发明您自己的__名称,因为它们可能会发生冲突。您可以在Data model文档中找到相当详细的此类方法列表。

_...通常用作"内部"名称。例如,以_开头的模块不应该直接使用;类似地,以_开头的方法应该是私有的,依此类推。这只是一种惯例,但你应该尊重它。

相关文章