9. 模組與套件
I. 何謂模組(Module)?
就是一個含有多個「函式」、「變數」、「類別」的Python檔案,通常隸屬於某套件之下
II. 何謂套件(Package)?
在Python中,套件可視為模組的目錄,一個套件中可有多個模組
下方為專案、套件、子套件、模組間的關係例圖
專案名稱
└── 套件目錄
├── __init__.py
├── 子套件目錄1
│ ├── __init__.py
│ ├── moduleX.py
│ └── moduleY.py
├── 子套件目錄2
│ ├── __init__.py
│ └── moduleZ.py
└── moduleA.pyPython中,套件其實與函式庫差不多,分為:
標準函式庫(standard library)
安裝 python 時一併安裝的套件【如:and、float、dict...】
內建函式庫(built-in library)
安裝 python 時一併安裝的套件【如:math、random、time...】
外部函式庫(external library)
需要另外安裝的模組與套件【如:Numpy、Pandas、SciPy...】
III. 為何需要套件、模組?
主要目的是希望讓專案更條理、更組織化,此外還能方便打包分給別人使用
A. 模組的種類
Python內建的模組
自行安裝的模組
同個專案(資料夾)的Python檔案(.py)
匯入後,模組名稱為成為一個變數
B. 模組的使用
方法一
利用import將模組(Module)匯入到此程式中:import [module]
方法二
如果只希望匯入模組中的特定物件則可以使用:from [module] import [objects]
方法三
匯入模組,但這個名字可能跟其他名稱衝突(或為方便),因而改名:import [module] as [module new_name]
方法四
若希望匯入整個模組可以使用*【此方式較不推薦】:from [module] import *
不推薦原因是容易造成名稱衝突
C. 使用Python內建模組
D. 查看模組內函式
使用
dir()函式dir()若不帶任何參數物件,它的執行結果會顯示出當前範圍內的變數、方法和屬性dir()若帶參數時,返回參數的屬性、方法
E. 自己創建模組
先假設我們的專案結構長成下面這個樣子
套件內一定要有
__init__.py檔,用來宣稱自己是一個套件。即使它內容是空的也沒關係
假設模組moduleA.py裡頭定義了一個函式: hello_func()
那麼在同樣目錄下的模組main.py想要重複使用hello_func這個函式,就能夠藉由import從模組moduleA.py中匯入
F. 須創建模組的情況
你可能會有疑問,函式就能夠簡化類似步驟的程式碼,為何還需要模組?這樣反而要透過模組再引入想要的函式
其實是因為如果將許多函式與主程式都寫在同一個檔案中,會讓整個檔案的程式碼顯得非常多、不易閱讀,最重要的是不易維護或供其他程式使用
所以通常我們習慣將類似領域的函式獨立出來成為一個模組
例如:將用在數學方面的「函式」及「變數」都獨立出來包成一個math.py的模組
【換你試試看1】
遊戲規則:電腦要可以隨機出一個數字,讓使用者猜。另外,每次猜到數字時,要顯示這次花幾秒才猜到答案 提示:可利用
time.time()的相減完成
【換你試試看2】
製作出一個猜拳遊戲。額外規則:玩家需要在5秒內出拳,不然電腦會"森77",除此之外,電腦會隨機出拳,不能當哆啦A夢
IV. 附檔
A. 程式碼提示
Last updated
Was this helpful?
