1. 程式人生 > >from module import 和 import module 的區別

from module import 和 import module 的區別

import a
a必須是模組(.py檔案級別及以上)
可以使用多層. 比如 import a.b.c.d 但是d必須是模組,前面是路徑結構的模組(帶__init__.py才算是模組)


from a import b
a必須是模組, b可以是模組,也可以是模組下層的屬性(類,函式,定義...)


而從python的核心去分析
import a可以匯入一個標準的python模組,將模組載入記憶體,並加到sys.modules中。多次import同一模組只是將名稱匯入到當前的local名字空間,也就是一個模組不會重複載入,只是加了一個引用而已。

from a import b會把b直接匯入到local名稱空間去,所以它可以直接使用,而不需要加上模組名的限定。


什麼時候你應該使用 from module import *

如果你要經常訪問模組的屬性和方法,且不想一遍又一遍地敲入模組名,使用 from module import。
如果你想要有選擇地匯入某些屬性和方法,而不想要其它的,使用 from module import。
如果模組包含的屬性和方法與你的某個模組同名,你必須使用 import module 來避免名字衝突。