简短的回答: 。对于较长的答案,这很不好用,请继续阅读…
__dunder_names__
据我所知,这些表没有完整的表(也没有它们的正式名称!)。有两个来源:
唯一真正的 “魔术常数” 是__debug__
:SyntaxError
尝试分配给该名称。它涉及常量的列表,并在上下文中提到的assert
声明。
语句特定使用的另一个模块级名称是__all__
,该名称在import
语句旁边记录。
__main__
是在其中执行脚本的顶级环境。
__future__
用于访问尚非必需的语言功能(例如print_function
,替换print
Python 2中的语句)。
其余大多数(__name__
,__file__
等)由导入系统添加到模块中,因此在导入文档中列出。
也有许多与对象有关的东西。对于基本方法实现内置行为(如__eq__
和__ge__
,你提到)中列出的数据模型文档。但是还有许多其他更具体的名称。例如,在异常文档中,有一些与异常相关的内容,例如__cause__
和。__traceback__
请注意,其中大多数都没有什么特别的“魔术”,它们只是常规属性,可以根据需要分配给它们。但是,它们被认为是为内部Python机器保留的,因此您不应该添加自己的机器。根据“标识符的保留类”上的语言参考:
任何 使用的__*__
名称,在任何情况下,不遵循明确记载的使用,如有破损不会发出警告。
就是说,我认为在官方文档中的 任何地方 都没有实际指定一些常用的用法,例如__author__
和__version__
;参见例如Python文件的常见标头格式是什么?而什么是__author__的由来?一些人通过PEP-8拥有半官方身份,仅此而已。