资讯专栏INFORMATION COLUMN

Python语法糖——for/else循环语句里的break

missonce / 2703人阅读

摘要:在中的或者循环之后还可以有子句,作用是循环中条件一直不满足,则最后就执行语句。而当循环是由语句中断时,就不被执行。等效于下面这段代码,可以类似语言那样添加一个与语句相似,语句中的子句用法是一样的,块在循环正常结束和循环条件不成立时执行。

在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句。

for i in range(5):
    if i == 1:
        print "in for"
else:
    print "in else"

print "after for-loop"


# in for
# in else
# after for-loop

但我们发现if条件在循环的过程中成立了,最终还是执行了else语句里的内容,这是为什么呢?

好的,我们这时看下面这段程序:

for i in range(5):
    if i == 1:
        print "in for"
        break
else:
    print "in else"

print "after for-loop"


# in for
# after for-loop

我们在if里添加了一个break,这是因为else是在for后执行的,但只有for循环正常退出时才会执行else语句(不是由break结束循环)。而当循环是由break语句中断时,else就不被执行。

for/else等效于下面这段代码,可以类似C语言那样添加一个flag:

found = False
for i in range(5):
    if i == 1:
        found = True
        print "in for"
if not found:
    print "not found"

print "after for-loop"


# in for
# after for-loop

for语句相似,while语句中的else子句用法是一样的,else块在循环正常结束和循环条件不成立时执行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37864.html

相关文章

  • Python中的上下文管理器和else

    摘要:上下文管理器协议包含和两个方法。因此必要时在上下文管理器函数中使用语句防范错误。构建临时忽略指定异常的上下文管理器。这是个基类,用于定义基于类的上下文管理器。块结束时,按照后进先出的顺序调用栈中各个上下文管理器的方法。 导语:本文章记录了本人在学习Python基础之控制流程篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 本文重点: 1、掌握if语句之外的el...

    Michael_Lin 评论0 收藏0
  • Python基础之(五)语句

    摘要:逻辑运算符假设,运算符描述实例布尔与如果为,返回,否则它返回的计算值。布尔或如果是,它返回,否则它返回的计算值。以为例,说明语句。逗号表示打印在同一行本来,在语句中,字符串后面会接一个符号。 运算符 算术运算符 前面已经讲过了四则运算,其中涉及到一些运算符:加减乘除,对应的符号分别是:+ - * /,此外,还有求余数的:%。这些都是算术运算符。其实,算术运算符不止这些。根据中学数...

    alaege 评论0 收藏0
  • 编程语言之问:何时该借用,何时该创造?

    摘要:普通可迭代对象只有魔术方法,而不像迭代器一样拥有魔术方法,这意味着它无法实现自遍历过程,同时在经过循环的它遍历后,也不会破坏原有的结构。这两个是我创造的概念,详见进阶迭代器与迭代器切片。 showImg(https://segmentfault.com/img/remote/1460000019621809); 本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:...

    spademan 评论0 收藏0
  • Hollis原创|不了解这12个语法,别说你会Java

    摘要:但其实,虚拟机并不支持这些语法糖。方式为每个泛型类型创建唯一的字节码表示,并且将该泛型类型的实例都映射到这个唯一的字节码表示上。GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗); GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗); GitHub 2.5k Star 的Java工程师成神之路 ,真的确定不来了解一下吗); 本文从 ...

    番茄西红柿 评论0 收藏0
  • Hollis原创|不了解这12个语法,别说你会Java

    摘要:但其实,虚拟机并不支持这些语法糖。方式为每个泛型类型创建唯一的字节码表示,并且将该泛型类型的实例都映射到这个唯一的字节码表示上。GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗); GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗); GitHub 2.5k Star 的Java工程师成神之路 ,真的确定不来了解一下吗); 本文从 ...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<