Python 自學第八天:Package 封包

AdSense

功用

模組其實就是 .py 的檔案。而 Package 封包,是用來放置數個模組的資料夾,方便模組的管理和使用

在 Package 中,形成自己的命名空間,可以採用 . 的方式,引用 Main Package 裡面的子封包模組變數函式,就不用擔心名稱重複的問題。

使用封包後,就可以不需要自己手動增加模組搜尋路徑到 sys.path 中。超級方便!!!!!

製作 Package

例如,我在 Python_beginning 資料夾中,建立一個跟科目有關的資料夾 subject,裡面放置一個空的 __init__.py 檔案 (四條底線 _),subject 資料夾就形成一個 Package 封包

1
2
3
4
5
6
7
8
Python_beginning
├ day1-start.py
├ day2-dataType_var.py
├ subject
| ├ __init__.py
| ├ english.py
| └ math.py
└ day7-module.py

分別在 subject 封包中定義不同類型的模組,就完成了封包的製作,如下我定義兩個模組,english.pymath.py

1
2
3
4
5
# Python_beginning/subject/english.py
grade = "B+"

def practice(thing="listening"):
print("Practice English "+thing)
1
2
3
4
5
6
7
8
# Python_beginning/subject/math.py
grade = "A-"

def practice(thing="arithmetic"):
print("Practice "+thing)

def doExercises(topic="Trigonometric functions"):
print("Do exercises on "+topic)

使用 Package

使用時,直接引入 主封包名(.子封包名).模組名,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Python_beginning/day7-module.py
import subject.english as myEn
import subject.math as myMath

print("English grade: "+myEn.grade)
myEn.practice()
# English grade: B+
# Practice English listening

print("Math grade: "+myMath.grade)
myMath.doExercises()
# Math grade: A-
# Do exercises on Trigonometric functions

參考資料:
彭彭的課程:Python Package 封包的設計與使用