問題描述
有時 python 執行到一半會莫名停止,
此文為之前解 bug 最後找到的有效解法。
解法
可能原因有很多種,但這邊只列出個人有成功的解法。
簡單來說,我碰到的是在 call function 時回傳的 args 數量不對等的問題。
例如:
def bug_func():
return 1,2,3,4,5
a,b,c,d = bug_func()
後來發現因為少一個變數而卡住,
此方法不見得是各種卡住狀況的通用解,為檢查的方向。
這種沒有直接跳 error 的 bug 最難搞了……
此外,依據 design pattern 的設計,
當一個 function 如果有回傳 3 個以上的變數,
會建議可以打包成一個 struct (dict),
再使用 dict[key],會讓程式碼更容易被閱讀。
建議修改方向: by design pattern
def bug_func():
dict = {}
dict[a] = 1
dict[b] = 2
dict[c] = 3
dict[d] = 4
dict[e] = 5
return dict
result_dict = bug_func()
# 之後再使用 dict[key] 去取用變數,記得 a,b,c,d,e 盡量是有意義的名字。