眾所周知,import 也許是 python 中最平淡無奇、最道貌岸然的東西了。它總是用一種呆滯木然的眼神看著身懷絕技的道友們玩出各種花招、翻雲覆雨,卻從來是不動聲色……這卻越來越像是乙個陰謀了!
曾經,我也在江湖上聽說過 import,它似乎是 python 的基本語句,用於匯入包(package),或者模組(module)到當前的作用域裡來,這樣我們就可以在程式中呼叫這些包和模組了。好象還真沒見它做過什麼出格的事情來呢。
通常模組是字尾為 ".py"、".pyo"、".pyc"、".pyd"、".so"、".dll" 這樣的檔案。啊哈,匯入模組還是挺簡單的,就連我這種初學者都爛熟於心咯。只是那個 package……
包
包通常總是乙個目錄,目錄下為首的乙個檔案便是 __init__.py。然後是一些模組檔案和子目錄,假如子目錄中也有 __init__.py 那麼它就是這個包的子包了。差不多就像這樣吧:
package1/ __init__.py我們可以就這樣匯入乙個包:module1.py
module2.py
package2/ __init__.py
module1.py
module2.py
import或者調入乙個子模組和子包:package1
from可以深入好幾層包結構:package1 import
module1from
package1 import
package2import
packag1.module1import
packag1.package2
from大致就這樣吧,我覺得,包的精髓應該是在 __init__.py 這個檔案之中的。package1.package2 import
module1import
package1.package2.module1
__init__.py 檔案
__init__.py 控制著包的匯入行為。假如 __init__.py 為空,那麼僅僅匯入包是什麼都做不了的。
>>>我們需要在 __init__.py 裡把 module1 預先匯入:import
package1>>>
package1.module1traceback (most recent call last):
file "", line 1, in ?
package1.module1
attributeerror: 'module' object has no attribute 'module1'
#檔案 __init__.py測試:import
module1
>>>__init__.py 中還有乙個重要的變數,叫做 __all__。我們有時會使出一招「全部匯入」,也就是這樣:import
package1>>>
package1.module1
from這時 import 就會把註冊在包 __init__.py 檔案中 __all__ 列表中的子模組和子包匯入到當前作用域中來。比如:package1 import
*
#檔案 __init__.py測試:__all__ = ['module1'
, 'module2'
, 'package2'
]
>>>__init__.py 檔案會在匯入時被執行。from
package1 import
*>>>
module2
import匯入模組
使用import 匯入模組時,系統做了以下幾步 1.匯入import後面緊跟的模組 2.將後面的名字指向該模組 例如 import os 系統先是匯入了os.py檔案,然後將os指向了os.py檔案,然後就可以用os.函式名來訪問os.py裡面的函式和屬性 使用import匯入模組有幾種方式 1.i...
import 匯入模組
import 匯入模組 import md 首先建立兩個資料夾 乙個run.py 第二個叫md.py md.py 這個檔案存的是 print from the md py def readl print md money def readl2 print md模組 readl def change ...
import匯入和from匯入
1.import匯入和from匯入 1.import匯入和from匯入可變型別和不可變型別有著本質的區別 2.import是用來匯入模組,from是用來匯入模組中的物件 3.from匯入和import匯入 當指向的變數是可變型別的話,可以共享全域性變數,如果是不可變 型別,from匯入就無法全域性共...