[Python]循环语句中的 else 子句

本文介绍了Python中循环语句的else子句用法,对比了C语言中的标志量解决方案,并通过查找素数的例子展示了如何利用else子句简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[Python]循环语句中的 else 子句
有其它编程语言经验的程序员接触到 Python 时最讶异的莫过于无所不在的 else,不仅分枝语句有,而且循环语句也有,甚至连异常处理也有。但现在我们来看看循环语句中的 else,看看它们的语法:
while_stmt ::=
"while" expression ":" suite
["else" ":" suite]
for_stmt ::=
"for" target_list "in" expression_list
":" suite
["else" ":" suite]
要谈 else 分句,必须要知道 Python 从 C 语言中借来了语义相同的 break 和 continue 语句,因为 else 分句提供了隐含的对循环是否由 break 语句引发循环结束的判断。先来看一个没有应用 else 子句的例子:
>>> def print_prime(n):
... for i in xrange(2, n):
... found = True
... for j in xrange(2, i):
... if i % j == 0:
... found = False
... break
... if found:
... print '%d is a prime number'%i
这是一个查找素数的简单实现,可以看到我们借助了一个标志量 found 来判断是循环结束是不是由 break 语句引起的,如果对 else 善加利用,代码可以简洁得多:
>>> def print_prime2(n):
... for i in xrange(2, n):
... for j in xrange(2, i):
... if i % j == 0:
... break
... else:
... print '%d is a prime number'%i
当循环“自然”终结(循环条件为假)时 else 从句会被执行一次,而当循环是由 break 语句中断时,else 从句就不被执行。
与 for 语句相似,while 语句的else 子句的语意是一样的。else 块在循环正常结束和循环条件不成立时执行。
与 C/C++ 等较为“老土”的语言相比,else 子句使程序员的生产力、和代码的可读性都得到了提高。尽管如此,我见过的代码中使用 else 子句的情况并不多,大概是因为大家都习惯了 C 式的标志量解决方案,我建议大家多使用 else。
最后八卦一下,如果在 python 中想直接退出多重循环,你应该使用异常,python 不提供 goto。关于异常,下次我们再来聊聊。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值