专栏首页祥的专栏[Python]循环中的else,break和continue详解

[Python]循环中的else,break和continue详解

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/43792425


在看Python的文档的时候看到了forwhile语句和C语言中有一个最大的区别—可以有一个可选的else语句。这个语句的执行触发机制让我不大明白,通过代码测试才了解了什么情况下触发else语句。“凡存在,皆合理”,Python的设计者肯定是有他的目的,现在咱们来探究一番。

for语句为例,开发环境Python3.4

Python循环中的else作用

循环中else的存在是为了让代码更清晰,更加简洁。下面举个例子给大家看看,分别用 传统的写法带else的写法 实现作用相同的代码

传统C格式的for循环写法

    myList = [1,2,3,4,5,6,7]
    isFound = False

    for item in myList:
        if item == 4:
            isFound = True
            print('List 有 4')
            break

    if not isFound:
        print('List 没有 4')

带else语句for循环写法

    myList = [1,2,3,4,5,6,7]

    for item in myList:
        if item == 4:
            isFound = True
            print('List 有 4')
            break    
    else:
        print('List 没有 4')

对比两处代码,不难发现相较于传统的for循环写法,带else语句的写法更加的简洁,而且少了isFound这个变量以及跳出循环后的这个if判断语句

总结

for … else结构

  1. for里面的语句和普通的(没有else的for语句)没有区别;
  2. else中的语句会在循环正常执行完后执行;
  3. for中语句通过break跳出而中断时,不会执行else

最后总结一句,for ... else结构一般要和break一起使用,才能体现这个结构的强大之处(至少我是这么觉得的,不知还有什么其他情况,希望网友不吝赐教)。

while ... else结构也符合上述条件。

Python循环中的continue和break

continuebreak语句其实就和C语言的用法是一样的,只是在for ... else结构结构中

  1. for中语句通过break跳出而中断时,不会再执行else中的内容;
  2. 而将continue语句和寻常语句无异,只要不是不通过break,光有continue会进入else语句

continue代码示例

代码如下:

    for x in range(1, 4):
        print(x, 'for语句')
        continue
        print(x, 'continue语句后')
    else:
        print(x, 'else语句')

执行结果:

1 for语句
2 for语句
3 for语句
3 else语句

break代码示例

代码如下:

    for x in range(1, 4):
        print(x, 'for语句')
        break
        print(x, 'break语句后')
    else:
        print(x, 'else语句')

执行结果:

1 for语句

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux:awk命令详解

    ? 简单使用: awk :对于文件中一行行的独处来执行操作 。 awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一...

    张戈
  • 如何在Fedora 22上安装LAMP(Linux,Apache,MySQL,PHP)

    LAMP堆栈是一组用于启动和运行Web服务器的开源软件。首字母缩略词代表Linux,Apache,MySQL和PHP。由于服务器已经在运行Fedora,因此需要...

    风研雨墨
  • PHP核心编程知识点

    北国风光
  • 基于Kubernetes的持续部署方案

    本技术方案为基于Kubernetes为核心的持续部署(下文简称CD)方案,可以满足开发方的程序级日志查看分析,运维方的快速扩容与日常运维分析,并且可以保证用户的...

    kubernetes中文社区
  • MyBatis4:动态SQL

    MyBatis的一个强大特性之一通常是它的动态SQL能力。如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了...

    yaohong
  • 对自助提卡系统的一次代码审计

    并非有意愿要审计该站,前面的走的黑盒没有过于精彩部分就不在贴上了,对于此系统站你们懂的,多说无益,这套程序是开源的,像这种自助提卡系统相信大家已经不在陌生了,很...

    FB客服
  • 西湖论剑2019 WriteUp

    扫描目录,得到.DS_Store文件,使用 https://github.com/lijiejie/ds_store_exp进行还原

    用户5878089

扫码关注云+社区

领取腾讯云代金券