打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[Python]循环语句中的else子句

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

  [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。关于异常,下次我们再来聊聊。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python中的else
本教程通过几个实际示例介绍在 python 中执行循环的各种方法(PYTHON 中的循环通过示例进行解释)
Python 流程控制全记录
Python学习入门(8)—流程控制语句
Python循环语句代码逐行详解:while、for、break和continue
Python 学习笔记之流程控制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服