- 我们都知道,Python中导入模块有两种方法,
import 和from...impo... ,其中,import 和from...import * 都可以导入模块中的所有方法,但当导入的模块中有__all__ 魔术变量时,两者就有所不同了。 - 假设模块
test.py 中有三个方法A,B,C ,但是__all__ = ['A','B'] ,这样的话,如果某程序导入该模块的方法为import ,仍然ABC 三个函数都可以调用,但当导入模块的方法是from...import * 时,只能调用变量__all__ 中的A,B 两个函数。 - 开发者在写一个模块文件时,难免会有些方法需要进行测试,但如果测试代码就简单的放在文件中,其他程序在导入该模块时,会自动执行测试的代码,这肯定不是我们想要看到的,所以Python提供了魔术变量
__name__ 来避免这种情况的发生: 当在模块文件中测试代码时,__name__ 变量的值为__main__ ,当在其他导入该模块的程序中运行时,__name__ 变量的值为该文件的名称,因此,我们在写测试代码时,可以在前面加上一句
if __name__ == '__main__':
这样一来,只有当我们在运行模块文件时,才会执行这段测试代码。
|