前面我们说了可以通过import * 来导入一个模块中的所有内容,那么如果我们想限定导入的内容该怎么办呢?
答案是:只需要在被导入的模块中加入__all__ = [限定导入内容]即可
我们看一个例子:
a.py文件:
__all__ = ["a", "func_a", "Test"] a = "nice" b = 1 def func_a(x): print(x) def func_b(m): print(m) class Test: def __init__(self, y): self.y = y def test_a(self): print("this is test_a") class TestX: def __init__(self, z): self.z = z def test_b(self): print("this is test_b")
a.py中,__all__限定了导入所有时导入的内容为变量a,函数func_a 和类Test
我们在b.py中导入所有的内容看看效果:
from package1.a import * print(a) print(b) func_a(2) func_b(2) t1 = Test(2) t2 = TestX(2)
运行结果如下:
我们可以看到,打印b的时候就已经报错了,说变量b未定义,所以a.py中的变量a并未被导入进来。
原文:https://www.cnblogs.com/ctltest/p/14631529.html