from moudule import *(这种方法不推荐)
一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。
比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:
foo()
上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。
但如果换成如下两种导入方式:
import module1
import module2 as m2
接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:
- #使用模块module1 的模块名作为前缀调用foo()函数
- module1.foo()
- #使用module2 的模块别名作为前缀调用foo()函数
- m2.foo()
或者使用 from...import 语句也是可以的:
- #导入module1 中的foo 成员,并指定其别名为foo1
- from module1 import foo as fool
- #导入module2 中的foo 成员,并指定其别名为foo2
- from module2 import foo as foo2
此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:
foo1() #调用module1 中的foo()函数
foo2() #调用module2 中的foo()函数