簡體   English   中英

Python:if-else 之間的 for 循環,這是如何/為什么起作用的?

[英]Python: for loop between if-else, how/why does this work?

我目前正在閱讀 Lynda Python 教程,在生成器部分我看到以下代碼:

def isprime(n):
    if n == 1:
        return False
    for x in range(2, n):
        if n % x == 0:
            return False
    else:
        return True

一開始我沒有注意到它,但是當我瀏覽代碼時,我注意到else關鍵字在它和if之間有一個完整的 for 循環,在相同的縮進級別。 令我驚訝的是,代碼不僅運行,而且實際上產生了正確的行為。

如果我用一個簡單的print("Hello, World")語句替換 for 循環,那么我只會得到一個預期的解釋器錯誤。

這種語法背后的原因是什么,為什么它適用於循環語句而不適用於print()之類的其他語句?

作為參考,我希望代碼編寫如下:

def isprime(n):
    if n == 1:
        return False     
    for x in range(2, n):
        if n % x == 0:
            return False
    return True

for:塊之后的else:塊僅在循環正常完成時運行。 如果你break循環,它就不會運行。 在這種情況下,這沒有任何區別,因為您永遠不會跳出循環; 你在它結束之前return或者你讓它正常完成。

這種行為的原因是在 python for 循環實際上可以跟在 else 語句之后。 Else 分支在通常循環完成的情況下執行,並在 break 后被跳過

暫無
暫無

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

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