二十八 模組

2021-08-13 15:17:12 字數 1560 閱讀 6449

模組

在電腦程式的開發過程中,隨著程式**越寫越多,在乙個檔案裡**就會越來越長,越來越不容易維護。

為了編寫可維護的**,我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的**就相對較少,很多程式語言都採用這種組織**的方式。在python中,乙個.py檔案就稱之為乙個模組(module)。

使用模組有什麼好處?

最大的好處是大大提高了**的可維護性。其次,編寫**不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用。我們在編寫程式的時候,也經常引用其他模組,包括python內建的模組和來自第三方的模組。

使用模組還可以避免函式名和變數名衝突。相同名字的函式和變數完全可以分別存在不同的模組中,因此,我們自己在編寫模組時,不必考慮名字會與其他模組衝突。但是也要注意,盡量不要與內建函式名字衝突。點

這裡檢視python的所有內建函式。

你也許還想到,如果不同的人編寫的模組名相同怎麼辦?為了避免模組名衝突,python又引入了按目錄來組織模組的方法,稱為包(package)。

舉個例子,乙個

abc.py的檔案就是乙個名字叫

abc的模組,乙個

xyz.py的檔案就是乙個名字叫

xyz的模組。

現在,假設我們的

abc和

xyz這兩個模組名字與其他模組衝突了,於是我們可以通過包來組織模組,避免衝突。方法是選擇乙個頂層包名,比如

mycompany,按照如下目錄存放:

mycompany├─ __init__.py├─ abc.py└─ xyz.py

引入了包以後,只要頂層的包名不與別人衝突,那所有模組都不會與別人衝突。現在,

abc.py模組的名字就變成了

mycompany.abc,類似的,

xyz.py的模組名變成了

mycompany.xyz。

請注意,每乙個包目錄下面都會有乙個

__init__.py的檔案,這個檔案是必須存在的,否則,python就把這個目錄當成普通目錄,而不是乙個包。

__init__.py可以是空檔案,也可以有python**,因為

__init__.py本身就是乙個模組,而它的模組名就是

mycompany。

類似的,可以有多級目錄,組成多級層次的包結構。比如如下的目錄結構:

mycompany ├─ web │ ├─ __init__.py │ ├─ utils.py │ └─ www.py ├─ __init__.py ├─ abc.py └─ xyz.py 檔案

www.py的模組名就是

mycompany.web.www,兩個檔案

utils.py的模組名分別是

mycompany.utils和

mycompany.web.utils。

自己建立模組時要注意命名,不能和python自帶的模組名稱衝突。例如,系統自帶了sys模組,自己的模組就不可命名為sys.py,否則將無法匯入系統自帶的sys模組。

mycompany.web也是乙個模組,請指出該模組對應的.py檔案。總結

模組是一組python**的集合,可以使用其他模組,也可以被其他模組使用。

建立自己的模組時,要注意:

Python學習札記 二十八 模組1

1.模組 乙個.py檔案稱為乙個模組。2.模組化的意義 a.提公升程式的可維護性 b.不用重複造輪子 3.避免模組衝突,解決方法 引入了按目錄來組織模組的方法,稱為包 package eg.abc.py abc模組,xyz.py xyz模組 倘若出現衝突 選擇乙個頂層資料夾名稱,盡量保證名稱唯一 m...

Lua程式設計(二十八)

lua語言會在執行源 之前先對其進行預編譯。生成預編譯檔案 也被稱為二進位制檔案,binary chunk 的最簡單方式是,使用標準發行班中附帶的luac程式。luac o prog.lc prog.lua上述命令會建立檔案prog.lua的預編譯版本prog.lc。lua解析器會像執行普通lua ...

CUDA學習(二十八)

多處理器級別 在更低層次上,應用程式應該最大化多處理器內各個功能單元之間的並行執行 如 硬體多執行緒 中所述,gpu多處理器依賴於執行緒級並行性來最大限度地利用其功能單元。因此利用率與駐留經線的數量直接相關。在每個指令發布時間,乙個warp排程器選擇乙個準備好執行下乙個指令的warp 如果有的話 然...