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()函數