簡體   English   中英

在Python中,else的目的是什么:繼續try..except塊?

[英]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:塊之后。

elsetry子句語法的一部分。 except相反。 這意味着“如果沒有例外發生,請執行此操作”。 它與if-else無關(也有一個不幸的名稱,令人困惑。即使是python的某些創建者也提到了這一點,但是現在更改它太困難了)

區別在於, else中的代碼在沒有異常發生時才執行,而代碼后續將不管執行。 在您提到的代碼示例中,它什么也不做,因為循環仍將繼續!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM