__all__与包中__init__.py中的bar import *之间的差异

时间:2016-08-16 19:48:42

标签: python import module package init

有人可以告诉我在我的__init__.py包中使用这两者之间的差异吗?哪个更好用?

__all__ = ['functions']

from functions import *

2 个答案:

答案 0 :(得分:0)

脚本bar__init__.py中可能的两个语句之间的区别是,bar下的子包或模块的导入范围。如果程序包栏中包含名为函数的子程序包,则该语句

从函数导入*

在bar__init__.py中的

会将功能子包导入到bar包的范围内,可以使用参考

对其进行访问。

bar.functions

导入bar的Python代码中的

。如果bar__init__.py包含代码

所有 = [功能]

然后是包含该代码的Python代码

从栏导入*

会将子包定义为函数(不引用bar。)

这两种方法都可以用来引用子包函数的内容,但是语法不同。

答案 1 :(得分:-2)

print(len(globals()))
import sys
print(len(globals()))
from sys import *
print(len(globals()))

输出:

8
9
67