1. 程式人生 > >Python模組化程式設計

Python模組化程式設計

模組化

在Python中,一個.py檔案就稱之為一個模組(Module),為了避免模組名衝突,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

自定義模組

我們可以自己寫一個模組,但是注意模組命名的時候要注意以下幾點:

  • 模組名要遵循Python變數命名規範,不要使用中文、特殊字元
  • 模組名不要和系統模組名衝突,最好先檢視系統是否已存在該模組,檢查方法是在Python互動環境執行 import abc,若成功則說明系統存在此模組

我們現在自己寫了一個模組,circles.py

pi=3.14159
def area(radius):
    return pi*(radius**2)
def circumference(radius):
    return 2*pi*radius
def sphereSurface(radius):
    return 4.0*area(radius)
def sphereVolume(redius):
    return (4.0/3.0)*pi*(radius**3)

if __name__=='__main__':
    print(area(3))

 這裡我們要提到 __name__ 屬性。每個模組都有 __name__ 屬性。如果我們是在本模組執行的話,__name__屬性的值為__main__,如果是其他模組匯入該模組的話,該模組的__name__屬性值為包名。

匯入模組

安裝第三方模組