python 多層巢狀跳轉的方法
阿新 • • 發佈:2019-02-19
#跳轉 #Python 不支援 goto 和 label,想要在多層巢狀迴圈中跳轉,稍稍有些麻煩。最簡單的做法 #是設定跳轉標誌,並在相應位置檢查。 def test(): stop = False while True: while True: stop = True # 中斷前設定跳出標誌,供外迴圈判斷。 break if stop: break #或者,將內層迴圈重構為函式,基於返回值作出判斷。 def test(): def inner(): # 內迴圈重構函式,以返回值作為跳轉標誌。 while True: return False return True while True: if not inner(): break #更激進的做法是丟擲異常,可繞開迴圈語句和函式限制,在呼叫堆疊層面攔截捕獲。當然, #這涉及函式呼叫和異常處理內容,後文另作詳述。 #網上有修改位元組碼插入跳轉指令實現 goto 的方法,可供研究,不建議使用。 #另定義多個異常,分別 raise 和 except,也算是變向實現 goto label 機制。
轉載 python學習筆記 第三版