看板 Python 關於我們 聯絡資訊
※ 引述《henry8168 (番薯猴)》之銘言: : 大家好。 : 很多人都說 if else 已經很夠用了,不需要 switch, : 但 C 語言的 switch 有一個特點就是,如果每個 case 不加上 break, : 就能夠繼續執行下方其他 case 的行為。 我比較常用 return, 會像底下這樣寫: ---- def init_phase(): releasers = [] def error(msg, releasers): print( msg + ": initial failed.\n" ) while releasers: (releasers.pop())() return -1 if init_process1() < 0: return error("init_process1", releasers) releasers.append(release_process1) if init_process2() < 0: return error("init_process2", releasers) releasers.append(release_process2) if init_process3() < 0: return error("init_process3", releasers) releasers.append(None) # 'None' is safe because no error() hereafter # replace None if there is release_process3() print("initialization succeeded !!") return 0 ==== 因為要先放 release_xxx 進 releasers, 會有一些 overhead. 如果有更多層的init_xxx, 也可以考慮再用 array(init_xxx, release_xxx, msg_xxx) + for + zip 包起來. for i, m, r in zip(init_xxx, msg_xxx, release_xxx): if i() < 0: return error(m, releasers) releasers.append(r) return 0; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.228.54 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1508431668.A.61F.html ※ 編輯: edwar (36.228.228.54), 10/20/2017 00:49:23