[英]when is it necessary to add an `else` clause to a try..except in Python?
[英]In Python, what would be the purpose of else:continue in a try..except block?
我正在閱讀一些源代碼,其中包含try
.. except
帶有else: continue
語句的塊。 它有點類似於以下內容:
numerator = float(1)
denominator = float(2)
def do_divisions(numerator=numerator, denominator=denominator):
for _ in range(10):
try:
fraction = numerator / denominator
print "{numerator}/{denominator} = {fraction}".format(numerator=numerator, denominator=denominator, fraction=fraction)
denominator -= 1
except ZeroDivisionError:
print "You cannot divide by zero!"
return False
else:
continue
result = do_divisions()
我正在努力了解else: continue
語句還可以。 從https://docs.python.org/2.7/tutorial/controlflow.html可以理解, else
子句將在沒有異常發生時執行,並continue
執行下一個循環迭代。 但是,這不是Python會做的嗎?
在這種情況下,是, else: continue
是多余的,可能會被忽略。
但是,如果在else:
塊之后還有更多代碼,這將不是多余的,因為continue
語句將導致該代碼被跳過。 這是程序員可能要使用else: continue
。 例如,如果try:
塊中的代碼完整無例外地完成,則無需對循環中的當前項目進行任何操作,但是如果確實引發了異常,則程序需要捕獲該異常並執行其他操作清理之后。 該清理代碼可以放在else:
塊之后。
else
是try
子句語法的一部分。 與except
相反。 這意味着“如果沒有例外發生,請執行此操作”。 它與if-else
無關(也有一個不幸的名稱,令人困惑。即使是python的某些創建者也提到了這一點,但是現在更改它太困難了)
區別在於, else
中的代碼僅在沒有異常發生時才執行,而代碼后續將不管執行。 在您提到的代碼示例中,它什么也不做,因為循環仍將繼續!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.