標籤:
Python 模組 模組定義
隨著程式越來越龐大,需要分隔成幾個檔案;也需要能在不同檔案中複用函數、類和變數,而不是拷貝代碼。為了滿足這些需要,Python提供了模組。
簡單地說,模組就是一個儲存了Python代碼的檔案。模組能定義函數,類和變數。模組裡也能包含可執行檔代碼。
模組是包括Python定義和聲明的檔案。檔案名稱就是模組名加上 .py 尾碼。(目前使用Notepad++ 學習而儲存的 .py 檔案即為模組)
模組的模組名(作為一個字串)可以由全域變數 __name __ 得到。
例如,在目前的目錄下建立一個名為 fibo.py 的檔案,內容如下:
1 # Fibonacci numbers module 2 3 def fib(n): # write Fibonacci series up to n 4 a = 0 5 b = 1 6 while b < n: 7 print(b, end=‘ ‘) 8 b = a + b 9 a = b - a10 print()
備忘:Notepa++ 中可分視圖查看,選擇移動到另一視圖,查看下方
建立一 .py 檔案,如 module.py( 與 fibo.py 同一目錄),引用 fibo import fibo ,執行 fibo下的 fib 函數 fibo.fib(1000) (即輸出1000 內的 fibonacci數列),參見下方
匯入模組
模組需要匯入,通過上方的例子以及之前的章節,已經接觸到 import 的語句,現在具體來說明下模組的匯入。
import modulename1 [, modulename2[,... modulenameN] 可通過 import 語句匯入一個或多個模組,模組匯入命令通常放在指令碼頂端。
參考上例, import fibo 該命令不會直接把fibo中的函數匯入當前,只是引入了模組名fibo,可通過模組名來訪問函數 fibo.fib(1000)
可在代碼中定義變數來反覆使用該函數,如:
fib = fibo.fib # 建立函數變數fib(20)fib(100)
from modname import name1[, name2[, ... nameN]] 從模組中匯入一個或多個指定的部分到當前命名空間中
在 fibo.py 新增一個函數,代碼如下:
1 def fib_l(n): # return Fibonacci series up to n2 result = []3 a = 04 b = 15 while b < n:6 result.append(b) 7 b = a + b 8 a = b - a9 return result
通過 from fibo import fib_l 匯入 fibo 中的指定部分 fib_l,這樣不會匯入模組名 fibo
from modname import * 匯入模組中的所有定義(除了以底線_命名的),這種聲明不該被過多地使用。
定位模組
當你匯入一個模組,Python解析器對模組位置的搜尋順序是:
1. 目前的目錄
2. 如果不在目前的目錄,Python則搜尋在shell變數PYTHONPATH下的每個目錄
3. 如果都找不到,Python會察看預設路徑。UNIX下,預設路徑一般為/usr/local/lib/python/
模組搜尋路徑儲存在system模組的sys.path變數中。變數裡包含目前的目錄,PYTHONPATH和由安裝過程決定的預設目錄。
Python學習(六)模組