这个缩进为什么有效?python
这是我的密码:这个缩进为什么有效?python,python,indentation,Python,Indentation,这是我的密码: def is_prime(x): if x < 2: return False else: for i in range(2,x): if x % i == 0: return False else: return True print is_prime(508) 那么def is_prime(2)返回none?为什么?因为在
def is_prime(x):
if x < 2:
return False
else:
for i in range(2,x):
if x % i == 0:
return False
else:
return True
print is_prime(508)
那么def is_prime(2)返回none?为什么?因为在python中,for-循环的
可以有else
-子句
如果循环正常退出,则执行此子句。如果使用break
语句退出循环,则不会输入else
我建议你仔细阅读官方文件,如果还不清楚的话,把这个概念总结得相当好。for
和,而循环也知道else
子句,而不仅仅是if
或try
语句
循环的else
子句在控件离开循环时执行,除非使用break
中止循环
我必须承认这种行为,但它实际上非常合理,而且是一个有用的特性(请参见一个很好的示例)。在第二个示例中,else
与if
处于相同的缩进级别,因此它们都属于同一类。因此,对于循环中的第一项,您将根据该值返回False
或True
;i、 循环不会继续
现在,在原始代码中,else
与
的处于同一级别。所以它是一个
,用于..else
,实际上是:
当项目用尽时,执行else
子句中的套件(如果存在),循环终止
因此,如果循环自然完成(不调用break
),则基本上执行else块。因此,在您的情况下,这与不使用else
相同:
for i in range(2,x):
if x % i == 0:
return False
return True
正如其他人所说,for循环可以有else子句。阅读更多关于
当与循环一起使用时,else子句与
try语句的else子句比if语句的else子句更重要:
try语句的else子句在没有异常发生时运行,并且
循环的else子句在未发生中断时运行
关于“困惑的原因”这个话题,有一个很好的博客:。我建议您使用其他的结构,因为这会让您和未来的读者感到困惑。
for i in range(2,x):
if x % i == 0:
return False
return True