Python 中,一個程式檔案就是一個模組,也就是副檔名為 .py 的檔案都是模組。
例如有一個程式檔案 demo.py ,裡頭定義一個 Demo 類別, Demo 類別有一個 demo() 方法,底下未縮排的部分為測試程式碼,變數 d 為 Demo 型態的物件,然後 d 呼叫了 demo() 方法
class Demo:
def demo(self):
print("demo")
d = Demo()
d.demo()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:demo.py
# 功能:示範定義模組
# 作者:張凱慶
在另一個程式檔案 module01.py 直接用關鍵字 import 引入 demo 模組,未縮排的部分會先被執行,因此 import 之後直接印出字串 demo
import demo
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:module01.py
# 功能:示範定義模組
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 module01.py |
dmeo |
$ |
如果希望測試程式碼不會在 import 之後就先被執行,就要先測試模組的特殊變數 __name__ 是否為 __main__ ,只要 __name__ 等於 __main__ ,就表示這個模組正在執行中,如這裡 demo2.py 中測試程式碼就放在 if __name__ 等於 __main__ 陳述之下,如果這個 if 陳述為真,就會執行測試程式碼
class Demo:
def demo(self):
print("demo")
if __name__ == "__main__":
d = Demo()
d.demo()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:demo2.py
# 功能:示範定義模組
# 作者:張凱慶
再用另一個程式檔案 module01.py 來 import demo2 ,之後就可以繼續使用 demo2 中的定義,也就是說,判斷 __name__ 是否為 __main__ 讓 Python 程式檔案可以當成放各種定義之用,也能直接當作執行程式
import demo2
d = demo2.Demo()
d.demo()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:module02.py
# 功能:示範定義模組
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 module02.py |
dmeo |
$ |
注意以上使用 Demo 用連用模組名稱 demo2 ,如果不想連用模組名稱,就要用 from 及 import ,例如
from demo2 import Demo
d = Demo()
d.demo()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:module03.py
# 功能:示範定義模組
# 作者:張凱慶
每一個模組都是執行程式,於命令列直接用 Python 指令 python3 執行 demo2.py ,此時 __name__ 就會是 __main__ ,因此會執行底下縮排的程式碼
$ python3 module03.py |
demo |
$ |
相關教學影片