本文 AI 產出,尚未審核

Python 基本語法 – 關鍵字與保留字

簡介

在任何程式語言中,**關鍵字(keyword)保留字(reserved word)**都是語言的骨幹。它們由直譯器或編譯器保留,不能被當作變數、函式或類別的名稱使用。對於 Python 初學者而言,若不熟悉這些字彙,就很容易碰到 SyntaxError,甚至在程式執行時產生難以偵測的錯誤。

本篇文章將帶你深入了解 Python 的關鍵字與保留字,說明它們的功能、常見使用情境,以及在實務開發中應該注意的陷阱與最佳實踐。透過 實用範例,你將能快速辨識與正確使用這些字彙,寫出更具可讀性與可維護性的程式碼。


核心概念

1. 什麼是關鍵字與保留字

  • 關鍵字:Python 語言內建的保留字,具有特殊語法意義,例如 iffordef 等。
  • 保留字:在 Python 3.0 之後,關鍵字與保留字已合併成同一個集合,統稱為 keywords。它們全部儲存在 keyword.kwlist 中,任何嘗試將它們作為自訂名稱的行為都會導致 SyntaxError

小提醒:即使在未來的 Python 版本加入新關鍵字,舊程式碼仍須保持相容性,避免使用可能成為關鍵字的字串作為名稱。

2. 取得當前 Python 版本的關鍵字列表

import keyword

# 列出所有關鍵字
print(keyword.kwlist)

# 檢查某個字串是否為關鍵字
print(keyword.iskeyword('class'))   # True
print(keyword.iskeyword('my_var'))  # False

上述程式碼示範如何使用 keyword 模組動態取得關鍵字清單,對於開發工具或程式碼產生器特別有用。

3. 常見關鍵字分類

類別 關鍵字範例 用途說明
流程控制 ifelifelseforwhilebreakcontinuepass 控制程式執行的走向
函式與類別 defreturnlambdaclassyield 定義函式、回傳值、匿名函式與類別
例外處理 tryexceptfinallyraiseassert 錯誤捕捉與自訂例外
資料結構 inisnotandor 佈林運算與成員檢查
其他 importfromasglobalnonlocaldelawaitasync 模組管理、作用域控制、協程等

4. 程式碼範例

4.1 使用 ifelifelse 判斷

def grade(score):
    """根據分數回傳等第"""
    if score >= 90:
        return 'A'
    elif score >= 80:
        return 'B'
    elif score >= 70:
        return 'C'
    else:
        return 'F'   # 其他分數皆為 F

print(grade(85))   # 輸出: B

ifelifelse 為最常見的流程控制關鍵字,切勿將它們寫成變數名稱。

4.2 for 迴圈與 enumerate

fruits = ['蘋果', '香蕉', '櫻桃']

# 使用 for 直接遍歷
for fruit in fruits:
    print(fruit)

# 同時取得索引值
for idx, fruit in enumerate(fruits, start=1):
    print(f'{idx}. {fruit}')

forinenumerate 搭配使用,可讓迴圈更具可讀性。

4.3 defreturnlambda 的比較

# 正規函式
def square(x):
    return x * x

# 匿名函式 (lambda)
square_lambda = lambda x: x * x

print(square(5))          # 25
print(square_lambda(5))   # 25

def 用於建立具名函式,lambda 則適合簡短的單行運算。兩者皆不可使用關鍵字作為函式名稱。

4.4 例外處理:tryexceptfinally

def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError as e:
        print('除以零錯誤:', e)
        result = None
    finally:
        print('運算結束')
    return result

print(divide(10, 2))   # 5.0
print(divide(10, 0))   # None 並顯示錯誤訊息

tryexceptfinally 為處理例外的關鍵字,務必正確縮排以免出現語法錯誤。

4.5 importas 與模組別名

import math as m   # 為模組取別名
print(m.sqrt(16))  # 4.0

from datetime import datetime as dt
print(dt.now())

使用 as 為模組或函式取別名,可提升程式碼可讀性與避免名稱衝突。


常見陷阱與最佳實踐

陷阱 說明 最佳實踐
使用關鍵字當變數名 list = [1, 2] 會覆寫內建 list 類別,導致後續程式錯誤。 永遠避免使用 keyword.kwlist 中的字串作為變數、函式或類別名稱。
拼寫錯誤 def fucntion(): 會產生 SyntaxError,因 def 拼錯。 使用 IDE 或 Linter(如 flake8pylint)即時捕捉拼寫問題。
保留字在未來版本被加入 asyncawait 在 Python 3.5 之前不是關鍵字,舊程式碼使用這兩個字作變數會在升級後失效。 撰寫程式時,先檢查官方文件的 關鍵字清單,避免使用可能成為關鍵字的字。
縮排與關鍵字混用 ifforwhile 等必須正確縮排,否則會出現 IndentationError 采用 4 個空格的統一縮排風格,並啟用編輯器的自動縮排功能。
globalnonlocal 誤用 不當使用會改變變數作用域,導致難以追蹤的 bug。 僅在需要跨函式共享變數時才使用,且盡量改用參數傳遞或回傳值。

實際應用場景

  1. 建立 DSL(Domain Specific Language)
    在開發自訂腳本語言或配置檔時,常會檢查使用者輸入是否衝突關鍵字。利用 keyword.iskeyword() 可快速驗證,避免產生語法錯誤。

  2. 自動程式碼產生器
    例如根據資料庫 schema 產生 ORM 類別,程式必須先過濾掉欄位名稱是關鍵字的情況,並自動加上前綴或後綴(如 field_)。

  3. 靜態分析工具
    Linter 會依據關鍵字清單檢查程式碼風格,提醒開發者不要使用保留字作為識別子,或提醒未使用的 passassert 等。

  4. 教學與測驗平台
    在自動評分系統中,會先解析學生提交的程式碼,檢查是否有非法使用關鍵字的情形,提供即時回饋。


總結

  • 關鍵字與保留字是 Python 語法的基礎,任何試圖將它們當作自訂名稱的行為都會導致錯誤。
  • 透過 keyword 模組,我們可以動態取得關鍵字清單,並在開發工具、程式碼產生器或靜態分析中加以利用。
  • 正確使用關鍵字(如 iffordef 等)以及避免與之衝突,是寫出乾淨、可維護程式碼的第一步。
  • 在實務開發中,常見的陷阱包括拼寫錯誤、縮排問題以及未來版本的關鍵字變化。遵循 最佳實踐(使用 IDE、Linter、統一縮排)能有效降低這些風險。

掌握了關鍵字的概念與使用方式,你就能更自信地撰寫 Python 程式,並在日後的開發工作中避免因語法衝突而產生的各種困擾。祝你寫程式順利,持續精進 Python 技能!