查找所有双下划线变量的列表?

Mic*_*x2a 21 python convention metadata

相关:Python文件的常见标题格式是什么?

我在哪里可以找到Python中常用的所有双下划线变量/关键字的列表?

在Python中,以双下划线开头和结尾的变量通常用于存储元数据或内置到系统中.例如,

#!/usr/bin/env python

__author__ = 'Michael0x2a'
__license__ = 'GPL'

class Test(object):
    def __init__(self):
        print 'Hello World!'

if __name__ == '__main__':
    t = Test()
Run Code Online (Sandbox Code Playgroud)

我很确定__author__,__license__而且非常有名.还有哪些双下划线元数据变量?有一个全面的清单,我可以检查一下吗?我可以自己编造,还是有一堆已成为我应该使用的事实标准?

之类的东西__init__,__name____doc__是几乎内置了Python.那些只是两个保留的双下划线关键字吗?还有吗?有些地方我可以获得一份清单吗?

[编辑]
我正在浏览并遇到另一个问题,该问题链接到一堆双下划线变量的思维导图.

Ray*_*ger 28

如果您想查看魔术名称是否记录,请转到Lib目录并运行:

egrep -oh '__[A-Za-z_][A-Za-z_0-9]*__' *.py | sort | uniq
Run Code Online (Sandbox Code Playgroud)

这产生:

'__all__'
'__args__'
'__author__'
'__bases__'
'__builtin__'
'__builtins__'
'__cached__'
'__call__'
'__class__'
'__copy__'
'__credits__'
'__date__'
'__decimal_context__'
'__deepcopy__'
'__dict__'
'__doc__'
'__exception__'
'__file__'
'__flags__'
'__ge__'
'__getinitargs__'
'__getstate__'
'__gt__'
'__import__'
'__importer__'
'__init__'
'__ispkg__'
'__iter__'
'__le__'
'__len__'
'__loader__'
'__lt__'
'__main__'
'__module__'
'__mro__'
'__name__'
'__package__'
'__path__'
'__pkgdir__'
'__return__'
'__safe_for_unpickling__'
'__setstate__'
'__slots__'
'__temp__'
'__test__'
'__version__'
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,有几十个众所周知的dunder名称不在此列表中:__ add_,__ iadd __,__ radd__等. (4认同)
  • @NedBatchelder要获得更完整的列表,你需要递归搜索__Lib__*和*下面的目录:``find Lib -name'*.py'-exec egrep -oh'__ [A-Za-z _] [A -Za-z_0-9]*__''{}'\; | 排序| uniq``.你会看到有*多个*名字 - 我的Py27结账时有256个名字:) (4认同)

Ign*_*ams 12

Python使用的完整列表在Python语言参考第3节"数据模型"中给出.其他每一个都是非标准的或由第三方模块使用,并单独记录.

  • 那是因为它不是语言的一部分。 (4认同)