「逐行看程式判斷結果」是 iPAS 中級科目二、三程式題最常見的題型,記憶體透視是最快的解題工具。考法一:追蹤指向——a = [1,2]; b = a; b.append(3) 後 print(a) 印什麼?考法二:可變與不可變——字串、整數重新賦值產生新物件,串列、字典原地修改影響所有共用者。考法三:把 list 傳進函式內修改,外面會不會變?考法四:DataFrame 方法多半回傳新物件(需回存),sklearn 模型 fit 後把參數存在實例屬性(coef_、mean_)。初級則考名詞辨析:變數、物件、參照、類別與實例、記憶體回收。
想練情境題與詳解 → AI 學習與考證地圖
因為多數輸出判斷題的陷阱都在「兩個名字是否指向同一個物件」。畫出門牌與物件的對應,就能一眼看出修改會不會外溢,比死背規則可靠。
list、dict、set 是可變物件,可以原地修改;int、float、str、tuple 是不可變物件,任何「修改」其實都是產生新物件並換門牌。這是判斷輸出的關鍵。
會。函式參數收到的是同一個門牌,用 append 等原地操作會直接改到外面的物件;但若在函式內重新賦值(x = []),只是換了區域變數的門牌,外面不受影響。
== 比較的是值是否相等,is 比較的是兩個名字是否指向同一個物件。兩個內容相同的串列 == 為 True、is 為 False,考題常用這點考觀念。
存在實例的屬性裡,命名習慣是結尾加底線,例如 StandardScaler 的 mean_、LinearRegression 的 coef_。沒有 fit 就呼叫 transform 或 predict 會出錯。
當沒有任何門牌指向該物件(參照計數歸零)時,垃圾回收機制會釋放它。所以 del a 刪的是名字,不一定立刻刪物件,還要看有沒有其他名字在指。