有没有一个全面的Python "magic constants"表?



>有谁知道__file____main__等在哪里定义?他们的正式名称是什么? __eq____ge__是"魔术方法",所以现在我只是将它们完全称为"魔术常数",但我什至不知道这是否正确。

谷歌搜索真的没有找到任何东西,甚至Python自己的文档在浏览各个页面后似乎也没有一个完整的列表。关于这一主题的任何指导将不胜感激。

简短回答:。对于更长的答案,它严重失控,继续阅读......


我所知,没有这些__dunder_names__的综合表格(也不是他们的官方头衔!)。有几个来源:

  • 唯一真正的"魔术常数"__debug__:这是一个尝试分配给这个名称SyntaxError。它包含在常量列表中,并在 assert 语句的上下文中提及。

  • 语句特定使用的另一个模块级名称是 __all__ ,它与 import 语句一起记录。

  • 库参考中记录了两个特殊模块,它们有自己的页面:

    • __main__是执行脚本的顶级环境。

    • __future__用于访问尚未强制使用的语言功能(例如 print_function替换 Python 2 中的 print 语句)。

  • 其余的大部分(__name____file__等)都是由导入系统添加到模块中的,因此列在导入文档中。

也有许多与对象相关的。实现内置行为的基本方法(如您提到的__eq____ge__)在数据模型文档中列出。但是还有许多其他更具体的名称存在;例如,在异常文档中有几个专门与异常相关的异常,如 __cause____traceback__


请注意,其中大多数都没有什么特别"神奇"的,它们只是常规属性,可以根据需要分配。但是,它们被认为是为内部 Python 机器保留的,因此您不应该添加自己的机器;根据"标识符的保留类"的语言参考:

在任何情况下,任何未明确记录使用__*__名称的行为,都会在没有警告的情况下被破坏。

也就是说,有几个常用的,我认为实际上没有在官方文档中的任何地方指定,例如__author____version__;例如,请参阅Python文件的常见标头格式是什么?以及__author__的起源是什么?少数通过PEP-8获得半官方地位,但仅此而已。


其他一些人走过这条路,从外观上看:

  • 查找所有双下划线变量的列表?
  • 我需要__closure__
  • 内置魔术变量名称/属性

最新更新