大多數編程語言都提供了 if...else... 語句,即表示如果滿足條件就做這件事,否則就做另外一件事。同時,在 Python 中 else 除了可以與 if 搭配使用,還有其他特別的語法: for…else …、while…else …、try…except...else 。
我們先來看一段代碼,如下:
上面的代碼中,打印結果會是什么呢?我們執行一下,打印信息如下:
我們可以發現,如果循環塊中代碼正常執行,則執行else代碼塊,如果前面的循環未執行完,則不執行else代碼塊。這與 if… else… 剛好相反,在 if… else… 語句中如果if代碼塊沒有執行,則執行else代碼塊。
我們看一下官方文檔中是如何解釋的:
A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there is no next item.
當用 break 關鍵字終止當前循環時,則不會執行 else 語句。而使用 continue 關鍵字快速進入下一輪循環,或者沒有使用其他關鍵字,循環的正常結束后,就會執行 else 語句。
同樣,我們再看一下 while…else … 語句,如下:
我們執行上面代碼,打印信息如下:
我們可以發現這與 for... else... 語法相同,如果循環塊中代碼正常執行,則執行else代碼塊,如果前面的循環未執行完,則不執行else代碼塊。
那么這種用法有哪些場景會使用到呢?
答:似乎除了下面這種場景,幾乎沒有其他場景會用到該語法。
當我們使用 for 循環遍歷列表查找某個元素(或者是更加復雜的數據結構)時,如果找到了就立刻退出循環,如果遍歷完所有元素還沒找到,則需要以另外一種形式(如,異常)的方式告知,此時,用 for... else... 會非常的優雅,如下:
如果不使用 for... else... , 那么還需特意創建一個標志位來標記是否已經找到,如下:
最后,需要注意因為這種語法在實際應用中比較稀有,也容易與 if... else... 混淆,建議用到此語法時,添加注釋說明,避免引起其他誤操作。