Sie*_*geX 5 python conditional if-statement
我目前正在阅读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
Run Code Online (Sandbox Code Playgroud)
我一开始并没有抓住它,但是当我浏览代码时,我注意到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
Run Code Online (Sandbox Code Playgroud)
小智 8
在else:一个后块for:块只有当循环正常完成运行.如果你break没有循环,它将无法运行.在这种情况下,这没有任何区别,因为你永远不会脱离循环; 你return在它结束之前或你让它正常完成.