![](/img/trans.png)
[英]Python: Why if-else oneline statement does not work with continue in else?
[英]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.