Python 型別提示(Type Hints)入門教學 | Python
2026/04/28
Python 是一門動態型別語言,變數不需要事先宣告型別。然而,隨著專案規模增長,缺乏型別資訊會讓程式碼難以維護。型別提示(Type Hints) 自 Python 3.5 引入後,讓開發者能為變數、函式參數和回傳值加上型別註解,大幅提升可讀性與 IDE 支援。
為什麼需要型別提示?
型別提示不會在執行時強制檢查型別,但它帶來了許多好處:
- 提升可讀性:一眼就能看出函式接受什麼參數、回傳什麼值
- IDE 支援:編輯器能提供更精準的自動補全與錯誤提示
- 減少 Bug:搭配靜態型別檢查工具(如 mypy)能在執行前發現型別錯誤
基本語法
為變數標註型別使用冒號 :,為函式回傳值標註型別使用箭頭 ->:
name: str = "Alice"
age: int = 30
score: float = 95.5
def greet(name: str) -> str:
return f"Hello, {name}!"
def add(a: int, b: int) -> int:
return a + b
print(greet("Bob")) # 輸出:Hello, Bob!
常見的容器型別
Python 3.9+ 可以直接使用小寫的內建型別名稱來標註容器型別:
names: list[str] = ["Alice", "Bob"]
scores: dict[str, int] = {"Alice": 95, "Bob": 88}
point: tuple[int, int] = (10, 20)
tags: set[str] = {"python", "tutorial"}
def get_average(numbers: list[float]) -> float:
return sum(numbers) / len(numbers)
print(get_average([85.0, 90.5, 78.0])) # 輸出:84.5
Optional 與 Union
當一個值可能是某個型別或 None 時,使用 Optional;當值可能是多種型別之一時,使用 Union:
from typing import Optional, Union
def find_user(user_id: int) -> Optional[str]:
users = {1: "Alice", 2: "Bob"}
return users.get(user_id)
def process(value: Union[int, str]) -> str:
return str(value)
# Python 3.10+ 可以用 | 替代
def process_new(value: int | str) -> str:
return str(value)
typing 模組常用型別
typing 模組提供更多進階型別,例如 Callable 可標註函式型別:
from typing import Callable
def apply(func: Callable[[int], int], value: int) -> int:
return func(value)
result = apply(lambda x: x * 2, 5)
print(result) # 輸出:10
型別提示不會強制型別
Python 的型別提示只是「提示」,不會在執行時檢查。若想在開發階段發現型別錯誤,可使用靜態型別檢查工具 mypy,在終端執行 mypy your_script.py 即可。
def add(a: int, b: int) -> int:
return a + b
# 傳入字串也不會報錯(執行時不檢查型別)
result = add("Hello, ", "World!")
print(result) # 輸出:Hello, World!
實用範例:為類別添加型別提示
型別提示也能應用在類別(Class)的屬性與方法上:
class Student:
def __init__(self, name: str, grades: list[int]) -> None:
self.name: str = name
self.grades: list[int] = grades
def average(self) -> float:
return sum(self.grades) / len(self.grades)
student = Student("Alice", [85, 92, 78])
print(student.average()) # 輸出:85.0
總結
型別提示(Type Hints)是 Python 中提升程式碼品質的重要工具。透過為變數、函式參數和回傳值添加型別註解,程式碼更容易閱讀與維護。搭配 IDE 的智慧提示和 mypy 等靜態檢查工具,更能在開發階段提早發現潛在錯誤。希望這篇文章能幫助你養成標註型別的好習慣。
型別提示常用於函式定義,建議先熟悉 Python 函數(Functions)入門指南。若想了解類別中的型別應用,可參考 Python 物件導向程式設計。