以下是用Python制造常見錯誤的示例及解析,涵蓋不同錯誤類型,便于理解調試原理:
一、語法錯誤 (SyntaxError)
# 錯誤1:缺少冒號
if Trueprint("這行不會執行")# 錯誤2:縮進錯誤
def func():
print("未對齊的縮進") # 缺少4空格/Tab
錯誤解析:Python依賴縮進和符號定義代碼結構,缺少:
或縮進不匹配會直接導致解析失敗。
二、運行時錯誤 (Runtime Error)
1. 類型錯誤 (TypeError)
# 錯誤3:字符串與整數相加
result = "5" + 5 # 錯誤4:錯誤參數類型
len(123) # len()需要可迭代對象
錯誤解析:操作符兩側類型不兼容或函數參數類型不符。
2. 名稱錯誤 (NameError)
# 錯誤5:未定義變量
print(undefined_variable)
錯誤解析:引用未聲明的變量或函數。
3. 索引錯誤 (IndexError)
lst = [1,2,3]
print(lst[3]) # 最大索引為2
錯誤解析:訪問超出列表/元組等序列長度的索引。
4. 鍵錯誤 (KeyError)
d = {"a":1}
print(d["b"]) # 鍵不存在
錯誤解析:訪問字典中不存在的鍵。
三、邏輯錯誤 (示例:死循環)
# 錯誤6:無限循環
while True:print("Ctrl+C 才能退出") # 需手動中斷
錯誤解析:條件永遠為真且無退出機制,導致程序卡死。
四、導入錯誤 (ImportError)
# 錯誤7:導入不存在模塊
import non_existent_module
錯誤解析:模塊未安裝或拼寫錯誤。
五、異常觸發 (主動引發錯誤)
# 錯誤8:主動觸發異常
raise ValueError("自定義錯誤信息")# 錯誤9:斷言失敗
assert 1 == 2, "數學定律被打破!"
錯誤解析:通過raise
主動拋出異常,或assert
條件不滿足時觸發斷言錯誤。
錯誤調試技巧
- 查看完整錯誤堆棧:從
Traceback
信息定位錯誤文件和行號。 - 使用
try-except
捕獲異常:try:risky_operation() except Exception as e:print(f"捕獲錯誤: {str(e)}")
- 類型檢查:用
isinstance()
驗證變量類型。 - 靜態檢查工具:使用
pylint
或mypy
提前發現潛在錯誤。
根據需求選擇對應錯誤類型,通過理解報錯信息可快速定位問題根源。