closure — 個人保險箱

每個撲滿都是獨立的記憶體

每次呼叫 製造計數器(),Python 都會建立一個全新的 Cell 物件保險箱。弟弟和妹妹的錢互不干擾。

🐷
弟弟的撲滿
獨立 Cell 物件 #1
0
🐷
妹妹的撲滿
獨立 Cell 物件 #2
0

# 閉包 — 每次呼叫產生獨立實例 def 製造計數器(): 計數 = 0 def 投幣(金額): nonlocal 計數 計數 += 金額 return 計數 return 投幣 弟弟的撲滿 = 製造計數器() 妹妹的撲滿 = 製造計數器()

關鍵:即使外層的 製造計數器() 已執行完畢,計數 依然活著——它被 Python 鎖進了保險箱(Cell 物件),綁在 投幣 函式身上帶走了。外部程式碼完全無法直接存取這個值。