Review & What's Next
| 概念 | 關鍵語法 | 應用場景 |
|---|---|---|
| 串列推導式 | [x*2 for x in lst if x > 0] | 快速建立清單 |
| with 語法 | with open(...) as f: | 檔案、DB、資源管理 |
| 裝飾器 | @functools.wraps | 快取、計時、驗證 |
| f-string | f"Hello, {name}!" | 字串格式化 |
| 型別提示 | def fn(x: int) -> str: | 可讀性、IDE 提示 |
# 1. 可變預設參數(陷阱!)
def bad(items=[]): # 所有呼叫共用同一個 list
items.append(1)
return items
def good(items=None):
if items is None:
items = []
items.append(1)
return items
# 2. 忘記 return
def double(n):
n * 2 # 沒有 return!永遠回傳 None
# 3. 直接比較 None
if result == None: # 不推薦
pass
if result is None: # 正確做法
pass
# 交換變數
a, b = b, a # Pythonic
# tmp = a; a = b; b = tmp # 不必要
# 解包
first, *rest = [1, 2, 3, 4, 5]
# first = 1, rest = [2, 3, 4, 5]
# 字典合併(Python 3.9+)
defaults = {"color": "red", "size": 10}
custom = {"size": 20, "font": "Arial"}
merged = defaults | custom # {'color':'red','size':20,'font':'Arial'}
# enumerate 取代手動計數
for i, item in enumerate(items, start=1):
print(f"{i}. {item}")
# any / all
scores = [80, 90, 75]
print(all(s >= 60 for s in scores)) # True — 全部及格?
print(any(s >= 90 for s in scores)) # True — 有人90分以上?
挑一個你真的想做的,從小功能開始,逐步增加,並加上單元測試!
從安裝環境到單元測試,你已經走過了完整的 Python 入門之路。
繼續寫程式,保持好奇心 !