有Python的“魔术常数”的完整表吗?
在哪里__file__
,__main__
等定义,什么是他们正式叫什么名字?__eq__
并且__ge__
是“魔术方法”,所以现在我只是将它们称为“魔术常数”,但我什至不知道那是正确的。
Google搜索实际上并没有带来任何好处,甚至Python自己的文档在浏览页面各层之后似乎也没有完整的清单。
-
简短的回答: 不 。对于较长的答案,这很不好用,请继续阅读…
__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拥有半官方身份,仅此而已。
通过它的外观,其他一些人踩了这条路:
-