---
# System prepended metadata

title: 第六章：模組與套件

---

## 第六章：模組與套件

### 模組
- **介紹**
  - 模組 指的是一個包含 Python 代碼的文件，可以被其他 Python 程序導入和使用。模組讓我們可以把代碼拆分成更小、更易管理的部分，提高代碼的可讀性和重用性。
  - Python 有兩種類型的模組：
    - **內建模組**：Python 自帶的模組，比如 `math`、`os` 等，這些模組可以直接導入使用。
    - **自定義模組**：由開發者自己編寫的模組，通常是包含在一個 `.py` 文件中的代碼。

- **導入和使用內建模組**
  - **導入模組**：使用 `import` 來導入模組。導入後，可以通過模組名來使用模組內的函式和變量。
    ```python=
    import math  # 導入內建的數學模組
    
    # 使用 math 模組中的 sqrt() 函式來計算平方根
    result = math.sqrt(16)
    print(result)  # 輸出: 4.0
    ```
    ```python=
    import pygame
    ```
  - **導入模組中的特定功能**：有時我們只需要模組中的某個函式或變量，可以使用 `from ... import ...` 語句來導入特定的部分。
    ```python=
    from math import pi  # 只導入 math 模組中的 pi 常量
    
    print(pi)  # 輸出: 3.141592653589793
    ```
  - **使用別名**：如果模組名稱太長或者與現有的變量名衝突，可以使用 `as` 為模組或函式設置別名。
    ```python=
    import math as m  # 將 math 模組重命名為 m
    
    print(m.sqrt(25))  # 輸出: 5.0
    ```

- **自定義模組**
  - **創建自定義模組**：將一些功能寫入一個 `.py` 文件中，即可將其視為一個模組。然後可以在其他文件中導入這個模組。
    ```python=
    # mymodule.py 文件
    def greet(name):
        return f"Hello, {name}!"
    ```
  - **導入自定義模組**：使用 `import` 導入自定義模組後，可以使用模組中的函式或變量。
    ```python=
    # 在其他文件中使用自定義模組
    import mymodule
    
    message = mymodule.greet("Alice")
    print(message)  # 輸出: Hello, Alice!
    ```
  - `__init__`
      - `__init__.py` 是一個 Python 檔案，用來讓資料夾變成一個 Python 模組（package）
      - 在 Python 3.3 以前，沒有 __init__.py，那個資料夾就不能被當成模組匯入。Python 3.3 之後支援「implicit namespace packages」，技術上可以省略，但不建議，除非你完全沒有初始化需求
      - **結構範例**
    ```
    my_package/
    │
    ├── __init__.py         # 這是模組的起點，可初始化
    ├── math_utils.py       # 子模組
    ├── string_utils.py     # 子模組
    ```