用模組來合理組織你的 python **是簡單又自然的方法。你應該建立一種統一且容易閱讀
的結構,並將它應用到每乙個檔案中去。下面就是一種非常合理的布局:
# (1) 起始行(unix)
# (2) 模組文件
# (3) 模組匯入
# (4) 變數定義
# (5) 類定義
# (6) 函式定義
# (7) 主程式
圖 3–1 乙個典型模組的內部結構**。
(1) 起始行
通常只有在類 unix 環境下才使用起始行,有起始行就能夠僅輸入指令碼名字來執行指令碼,無
需直接呼叫直譯器。
(2)模組文件
簡要介紹模組的功能及重要全域性變數的含義,模組外可通過 module.__doc__ 訪問這些內
容。 (3)模組匯入
匯入當前模組的**需要的所有模組;每個模組僅匯入一次(當前模組被載入時);函式
內部的模組匯入**不會被執行, 除非該函式正在執行。
(4)變數定義
這裡定義的變數為全域性變數,本模組中的所有函式都可直接使用。從好的程式設計風格角度說,
除非必須,否則就要盡量使用區域性變數代替全域性變數,如果堅持這樣做,你的**就不但容易
維護,而且還可以提高效能並節省記憶體。
(5)類定義語句
所有的類都需要在這裡定義。當模組被匯入時 class 語句會被執行, 類也就會被定義。類
的文件變數是 class.__doc__。
(6)函式定義語句
此處定義的函式可以通過 module.function()在外部被訪問到,當模組被匯入時 def 語句
會被執行, 函式也就都會定義好,函式的文件變數是 function.__doc__。
(7) 主程式
無論這個模組是被別的模組匯入還是作為指令碼直接執行,都會執行這部分**。通常這裡
不會有太多功能性**,而是根據執行的模式呼叫不同的函式。
推薦**風格:主程式呼叫 main()函式
由於主程式**無論模組是被匯入還是被直接執行都會執行, 我們必須知道模組如何決定
執行方向。乙個應用程式可能需要匯入另乙個應用程式的乙個模組,以便重用一些有用的**
(否則就只能用拷貝貼上那種非物件導向的愚蠢手段)。這種情況下,你只想訪問那些位於其
它應用程式中的**,而不是想執行那個應用程式。因此乙個問題出現了,「python 是否有
一種方法能在執行時檢測該模組是被匯入還是被直接執行呢?」 答案就是......(鼓聲雷
動).....沒錯! __name__ 系統變數就是正確答案。
如果模組是被匯入, __name__ 的值為模組名字
如果模組是被直接執行, __name__ 的值為 '__main__'
Python模組結構和布局
usr bin env python 1 起始行 coding utf 8 在python中使用本地編碼 this is a test moudle 2 模組文件 import sys 3 模組匯入 import os debug true 4 全域性變數定義 class fooclass obje...
python 模組布局
python標準的模組布局 1 起始行 通常在 nix系統下才使用起始行,起始行的作用是可以通過指令碼名字直接來執行指令碼,起始行一般是 usr bin env python,通過env,系統可以自動搜尋python直譯器的位置 2 模組文件描述 主要介紹模組的功能,可以通過module.doc 訪...
python 模組和包 python模組和包
一.模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 二.匯入模組 1.語法 import模組名from 模組名 import功能名from 模組名 import i...