我目前正在学习 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:
block 之后的 else:
block 仅在循环正常完成时运行。如果您break
退出循环,它就不会运行。在这种情况下,这没有什么区别,因为您永远不会跳出循环;您可以在它结束之前返回
,或者让它正常完成。
关于Python:for if-else 之间的循环,这是如何/为什么工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019794/