iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Software Development

來一場軟體開發學習之旅系列 第 15

Day 15:模組與套件 ─ 讓程式更有組織

  • 分享至 

  • xImage
  •  
  1. 什麼是模組(Module)?
    一個 Python 檔案(.py)就是一個模組。
    模組用來存放相關的函式、類別或變數,方便重複使用。
    例如,建立一個 math_utils.py:
    #math_utils.py
    def add(a, b):
    return a + b

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

在主程式 main.py 使用:
#main.py
import math_utils

print(math_utils.add(3, 5)) # 8
print(math_utils.subtract(10, 7)) # 3

  1. import 的不同用法
    整個模組
    import math_utils
    print(math_utils.add(1, 2))

指定函式或類別
from math_utils import add
print(add(3, 4))

別名(alias)
import math_utils as mu
print(mu.subtract(10, 5))

匯入全部(不建議)
from math_utils import *

  1. 什麼是套件(Package)?
    套件是模組的集合,用資料夾組織起來。
    每個套件資料夾內通常會有一個 init.py(Python 3.3 之後可以省略,但加上更清楚)。
    範例結構:

project/

├── main.py
└── utils/
├── init.py
├── math_utils.py
└── string_utils.py

math_utils.py

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

string_utils.py

def shout(text):
return text.upper()

main.py

from utils import math_utils, string_utils

print(math_utils.multiply(2, 5)) # 10
print(string_utils.shout("hello")) # HELLO

  1. Python 內建模組
    Python 已經內建許多模組,可以直接使用:

import random
import datetime
import os

print(random.randint(1, 10)) # 隨機數字
print(datetime.datetime.now()) # 現在時間
print(os.getcwd()) # 目前目錄

  1. 使用外部套件
    很多功能 Python 標準庫沒有,但可以用 pip 安裝外部套件。
    例如安裝 requests:

pip install requests

使用方式:
import requests

response = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(response.json())

這就是 Python 生態系的威力,你幾乎能找到任何領域的套件。

  1. 真實案例:小型專案結構
    expense_tracker/

    ├── main.py
    ├── expenses/
    │ ├── init.py
    │ ├── manager.py
    │ └── report.py
    └── utils/
    ├── init.py
    └── formatter.py

manager.py 處理新增/刪除帳目

report.py 處理報表輸出

formatter.py 處理格式化文字

main.py 則是專案進入點

這樣的結構,讓程式更有條理,也方便多人合作。
學會了模組與套件的使用方式,能讓程式更有組織、更容易維護。
明天,我們要學習Python中的重要內建函式與常用標準庫,幫助我們更高效地開發。


上一篇
Day 14:錯誤處理與自訂例外 ─ 讓程式更穩健
系列文
來一場軟體開發學習之旅15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言