初學者指南:如何在 Python 中建立和匯入模組

更新日期: 2024 年 10 月 11 日

在學習 Python 的過程中,你可能會發現隨著程式碼的增多,將所有程式碼都寫在一個檔案中會變得越來越困難。

為了更好地組織程式碼,提高重用性和可維護性,Python 提供了模組(Module)的概念。

模組允許你將相關的函式、類別和變數封裝在一個獨立的檔案中,並在其他程式中輕鬆地匯入和使用。

本文將為新手詳細介紹如何在 Python 中建立和匯入模組。


什麼是模組?

模組是包含 Python 定義和語句的檔案,副檔名為 .py

模組可以包含函式、類別和變數,甚至可以包含可執行的程式碼。

使用模組的好處包括:

  • 代碼重用:將常用的代碼放入模組,可在多個程式中匯入和使用。
  • 組織性:使程式碼結構更清晰,更易於維護。
  • 命名空間:避免命名衝突,模組為其內容提供了獨立的命名空間。

如何建立模組

建立模組非常簡單,只需將你的程式碼保存為一個 .py 檔案。

步驟:

  1. 建立一個新的 Python 檔案:使用文字編輯器或 IDE,創建一個新的檔案,命名為 my_module.py
  2. 編寫模組內容:在檔案中定義你需要的函式、類別或變數。

示例

# my_module.py

def greet(name):
    """傳入姓名,返回問候語。"""
    return f"Hello, {name}!"

def add(a, b):
    """返回兩個數字的和。"""
    return a + b

pi = 3.14159

如何匯入模組

有多種方式可以在其他程式中匯入和使用你創建的模組。

使用 import 語句

import my_module

# 使用模組中的函式和變數
message = my_module.greet("Alice")
print(message)  # 輸出:Hello, Alice!

result = my_module.add(5, 3)
print(result)   # 輸出:8

print(my_module.pi)  # 輸出:3.14159

使用 from...import 語句

from my_module import greet, pi

# 直接使用匯入的函式和變數
print(greet("Bob"))  # 輸出:Hello, Bob!
print(pi)            # 輸出:3.14159

匯入所有內容(不推薦)

from my_module import *

# 使用模組中的所有函式和變數
print(greet("Charlie"))  # 輸出:Hello, Charlie!
print(add(2, 4))         # 輸出:6
print(pi)                # 輸出:3.14159

注意:使用 from module import * 會匯入模組中的所有公開成員,但可能導致命名衝突,降低程式的可讀性,通常不建議使用。

為模組或函式起別名

import my_module as mm

message = mm.greet("David")
print(message)  # 輸出:Hello, David!

from my_module import add as addition

print(addition(10, 15))  # 輸出:25

模組的搜索路徑

當你匯入一個模組時,Python 解釋器會在以下位置按順序搜索:

  1. 當前目錄:執行程式所在的目錄。
  2. PYTHONPATH 環境變數:如果有設定,則會搜索其中指定的路徑。
  3. 標準庫路徑:Python 安裝目錄下的 lib 目錄。
  4. 第三方包目錄:如 site-packages

你可以通過以下方式查看 Python 的模組搜索路徑:

import sys

for path in sys.path:
    print(path)

確保你的模組檔案 my_module.py 與你要匯入的程式在同一目錄下,或者將模組檔案所在的路徑添加到 sys.path 中。


在模組中測試程式碼

有時你可能希望在模組中包含一些測試程式碼,但又不希望這些程式碼在模組被匯入時執行。可以使用 if __name__ == "__main__": 來實現。

示例

# my_module.py

def greet(name):
    return f"Hello, {name}!"

def add(a, b):
    return a + b

pi = 3.14159

if __name__ == "__main__":
    # 測試代碼,只在直接執行模組時運行
    print(greet("Test"))
    print(add(2, 3))
    print(pi)

當你直接執行 my_module.py 時,__name__ 會等於 "__main__",測試代碼會執行;但當模組被匯入時,測試代碼不會執行。


實際應用示例

建立一個簡單的計算模組

1. 創建模組檔案 calculator.py

# calculator.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        raise ValueError("除數不能為零")
    return a / b

2. 在主程式中匯入並使用模組

# main.py

import calculator

num1 = float(input("請輸入第一個數字:"))
num2 = float(input("請輸入第二個數字:"))

print(f"{num1} + {num2} = {calculator.add(num1, num2)}")
print(f"{num1} - {num2} = {calculator.subtract(num1, num2)}")
print(f"{num1} * {num2} = {calculator.multiply(num1, num2)}")
try:
    print(f"{num1} / {num2} = {calculator.divide(num1, num2)}")
except ValueError as e:
    print(e)

運行結果:

請輸入第一個數字:10
請輸入第二個數字:5
10.0 + 5.0 = 15.0
10.0 - 5.0 = 5.0
10.0 * 5.0 = 50.0
10.0 / 5.0 = 2.0

小結

  • 建立模組:將相關的程式碼保存在一個 .py 檔案中,即可創建一個模組。
  • 匯入模組:使用 import 模組名from 模組名 import 成員 的方式匯入模組。
  • 模組的搜索路徑:Python 會在當前目錄、PYTHONPATH、標準庫和第三方包目錄中搜索模組。
  • if __name__ == "__main__"::可以在模組中添加測試程式碼,僅在直接執行模組時運行。

進一步學習

  • 深入理解模組和套件:學習如何組織更大的項目,使用套件(含有 __init__.py 的目錄)來管理模組。
  • 使用第三方模組:瞭解如何使用 pip 安裝和管理第三方模組和套件。
  • 建立虛擬環境:學習如何使用虛擬環境(如 venv)來隔離和管理項目的依賴。

結論

模組是 Python 中強大而靈活的功能,允許你將程式碼組織成更易於維護和重用的單元。

通過將函式、類別和變數封裝在模組中,你可以在不同的程式之間共享代碼,減少重複工作。

希望這篇文章能夠幫助你理解如何建立和匯入模組,並在實際開發中靈活運用。

Similar Posts