Python-有人可以用Python解释__all__吗?

发布于 2021-02-02 23:22:55

越来越多地使用Python,并且不断看到__all__在不同__init__.py文件中设置的变量。有人可以解释这是什么吗?

关注者
0
被浏览
118
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    这是该模块的公共对象的列表,由解释import *。它覆盖了默认的内容,即隐藏以下划线开头的所有内容。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    链接到(但未在此处明确提及的)确切是何时__all__使用。它是一个字符串列表,定义了在模块from <module> import *上使用时将导出模块中的哪些符号。

    例如,以下代码foo.py显式导出符号barbaz

    __all__ = ['bar', 'baz']
    
    waz = 5
    bar = 10
    def baz(): return 'baz'
    然后可以像下面这样导入这些符号:
    
    from foo import *
    
    print(bar)
    print(baz)
    
    # The following will trigger an exception, as "waz" is not exported by the module
    print(waz)
    

    如果__all__上面的内容已被注释掉,则此代码将执行完毕,因为的默认行为import *是从给定的命名空间中导入所有不以下划线开头的符号。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看