Python中for循环搭配else的陷阱
生活随笔
收集整理的這篇文章主要介紹了
Python中for循环搭配else的陷阱
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
假設(shè)有如下代碼:
for i in range(10):if i == 5:print 'found it! i = %s' % i else:print 'not found it ...'你期望的結(jié)果是,當(dāng)找到5時打印出:
found it! i = 5實際上打印出來的結(jié)果為:
found it! i = 5 not found it ...顯然這不是我們期望的結(jié)果。
根據(jù)官方文檔說法:
>When the items are exhausted (which is immediately when the sequence is empty), the suite in the else clause, if present, is executed, and the loop terminates.>A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there was no next item.https://docs.python.org/2/reference/compound_stmts.html#the-for-statement大意是說當(dāng)?shù)膶ο蟮瓴榭諘r,位于else的子句將執(zhí)行,而如果在for循環(huán)中含有break時則直接終止循環(huán),并不會執(zhí)行else子句。
所以正確的寫法應(yīng)該為:
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' for i in range(10):if i == 5:print 'found it! i = %s' % ibreak else:print 'not found it ...'當(dāng)使用pylint檢測代碼時會提示 Else clause on loop without a break statement (useless-else-on-loop)
所以養(yǎng)成使用pylint檢測代碼的習(xí)慣還是很有必要的,像這種邏輯錯誤不注意點還是很難發(fā)現(xiàn)的。
總結(jié)
以上是生活随笔為你收集整理的Python中for循环搭配else的陷阱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3 中 sys.argv[
- 下一篇: python字符串与列表的相互转换