在研读python model 源码时,会看到一些*.py文件或者__init__.py 中会使用 __all__ 。对于__all__ 具体所其的做用是什么?在此对查取结果进行总结下。python
(1) 在__init__.py文件中函数
表示形式:spa
__all__=["module_a","module_b"]
在使用 from package_name import * 时 , 表示import 该package 中的 两个module及 两个module相关的类、方法等。code
(2) 在普通的*.py中源码
表示形式:it
__all__=["class_name","function_name"]
在使用 from module_name import * 时,表示import 该module中的__all__中所列出的。io
使用注意事项:function
(1) 在普通的*.py中, 使用__all__ 时,可使用__all__列出的 类、函数、变量等,不使用__all__时会使用module中的全部不如下划线开头的成员。class
(2)__all__只能影响到 from <package/module> import * 这种import 方式, 对于from <package/module> import <member>的 import 方式没有影响。import
(3) __all__ 的数据类型:List or Tuple (不肯定, 待验证其余)