➣ Reading Time: 3 minutes

問題描述

有時 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 盡量是有意義的名字。