Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否查找所有双下划线变量的列表?_Python_Metadata_Convention - Fatal编程技术网

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

Python 是否查找所有双下划线变量的列表?,python,metadata,convention,Python,Metadata,Convention,相关的: 在哪里可以找到Python中常用的所有双下划线变量/关键字的列表? 在Python中,以双下划线开头和结尾的变量通常用于存储元数据或内置到系统中。比如说, #!/usr/bin/env python __author__ = 'Michael0x2a' __license__ = 'GPL' class Test(object): def __init__(self): print 'Hello World!' if __name__ == '__main

相关的:

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

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

#!/usr/bin/env python

__author__ = 'Michael0x2a'
__license__ = 'GPL'

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

if __name__ == '__main__':
    t = Test()
我很确定
\uuuuuuuuuuuuuuuuu作者
\uuuuuuuuu许可证
是非常有名的。还有哪些其他双下划线元数据变量?有没有一份综合清单我可以查一下?我可以自己制定标准吗?或者有很多标准已经成为我应该使用的事实标准了吗

类似于
\uuuuu init\uuuuuu
\uuuu name\uuuuuu
\uuuuu doc\uuuuu
的内容基本上都内置在Python中。这是唯一两个保留的双下划线关键字吗?还有吗?有什么地方可以给我一份清单吗

[编辑]

我在浏览时遇到另一个链接到一组双下划线变量。

Python使用的完整列表在中给出。其他每一个都是非标准的或由第三方模块使用,并单独记录。

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

egrep -oh '__[A-Za-z_][A-Za-z_0-9]*__' *.py | sort | uniq
这将产生:

'__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__'
当我使用

dir(object)

我得到了这些:


'__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__has
h__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
, '__setattr__', '__sizeof__', '__str__', '__subclasshook__'

我认为它们是python中每个对象的dunder名称

这里有一个我喜欢的dunder及其用法的综合列表:

这些都不是关键字本身;它们只是“神奇的”。PEP 8将
\uuuuu version\uuuuu
列为纯粹出于文档目的的唯一全局变量。有趣的是,
\uuuuuu version\uuuuu
没有出现在链接语言引用中。这是因为它不是语言的一部分。有趣的是,有几十个著名的dunder名称不在此列表中:add,iadd、radd等@NedBatchelder要获得更完整的列表,您需要递归搜索Lib及其下面的目录:
find Lib-name'*.py'-exec egrep-oh'.[a-Za-z'.[a-Za-z'.[0-9]*.'''{}.\124;排序| uniq
。您将看到还有更多的名称--在我的Py27签出中有256个:)