Python語法糖——for/else循環語句裏的break

在Python中的while或者for循環以後還能夠有else子句,做用是for循環中if條件一直不知足,則最後就執行else語句。oop

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語句裏的內容,這是爲何呢?code

好的,咱們這時看下面這段程序:循環

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塊在循環正常結束和循環條件不成立時執行。loop

相關文章
相關標籤/搜索