在Python文件中,__all__应该放置在哪里?

8

我想知道在Python文件中,__all__的标准位置是什么?

我的假设是在导入语句直接下方。但是,我无法在任何地方明确说明/询问这一点。那么,通常应该将__all__放在哪里?

在下面的示例文件中,它将被放置在哪里?

#!/usr/bin/env python3

"""Where to put __all__."""

from time import time

# I think it should go here: __all__ = ["Hello"]

SOME_GLOBAL = 0.0


class Hello:
    def __init__(self):
        pass


if __name__ == "__main__":
    pass

感谢您提前的支持!
2个回答

17

根据PEP 8:

模块级别的"dunders"(即具有两个前导和两个尾随下划线的名称),例如 __all__, __author__, __version__ 等,应该放在模块文档字符串之后,但在除了来自 __future__ 导入之外的任何导入语句之前。

因此,如果您严格遵循PEP 8,那么您已经非常接近了。实际上,它并没有被严格遵守。大量的Python“内置电池”模块在导入之后定义了 __all__,因此您的方法是完全可以的。


1
我不断地发现自己需要重新阅读PEP8文档...谢谢! - Intrastellar Explorer

2
此处所述: 模块级别的“dunders”(即以两个前导和两个尾随下划线命名的名称),例如__all____author____version__等,应该放在模块文档字符串之后,但在除了__future__导入之外的任何导入语句之前。Python要求未来导入必须出现在模块中除文档字符串之外的任何其他代码之前。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接