1. 程式人生 > 其它 >【python】else 用法彙總筆記

【python】else 用法彙總筆記

技術標籤:Python

記錄一個小知識…

閱讀別人程式碼,有點疑惑,精簡後如下:

defcode_example(arg=None):
foriinrange(5):
ifarg:
break
else:
print('elsebranch')

問題

迴圈語句後面直接跟了 else 語句,未報錯,程式正常執行。
一般都是判斷語句配合 else 使用,那麼這裡的 else 是什麼作用呢?

嘗試

foriinrange(2):
print(i)
else:
print("elsebranch")

>>>
0
1
elsebranch

test01:根據列印資訊發現,for 迴圈正常執行完成後執行了 else 分支;

foriinrange(2):
continue
else:
print("elsebranch")

>>>
elsebranch

test02:迴圈體內增加 continue 跳出,執行完成迴圈後,正常執行 else 分支;

foriinrange(2):
#print(i)
break
else:
print("elsebranch")

>>>

test03:如果 break 掉迴圈,打斷迴圈,沒有任何輸出,也就是不走 else 分支;

deftest():
foriinrange(2):
return
else:
print("elsebranch"
)

>>>

test04:嘗試 return 語句,打斷迴圈,也是不走 else 分支。

結論
for … else …

  • 僅當迴圈體全部執行完成,才執行 else 分支;
  • 當迴圈過程未全部完成,則不執行 else 分支。

擴充套件
Python 支援 else 語句彙總:

  • for … else …
  • while … else …
  • try … except … else …
  • if … elif … else …

while 語句
與 for 迴圈相同步驟測試,結論一樣

try 語句:
1) 當 try 內無異常執行完成後,執行 else 分支;
2) 當 try 內出現異常,執行到 except,不再執行 else 分支。

deftest_01():
try:
print("try")
except:
print("except")
else:
print("else")

>>>
try
else
-----------------------
deftest02():
try:
5/0
except:
print("except")
else:
print("else")

>>>
except

彙總

  • for、while 迴圈
    當迴圈語句全部正常執行完成(包括 continue),會繼續執行 else 分支;當迴圈語句被打斷(break\return),不再執行 else 分支
  • try 異常處理
    當 try 語句無異常執行完成時,會繼續執行 else 分支;當丟擲異常後,不再執行 else 分支
  • if 條件判斷
    條件判斷,不符合 if 或者 elif,才執行 else 分支