Python中for后接else的語法使用
今天看到了一個比較詭異的寫法,for后直接跟了else語句,起初還以為是沒有縮進(jìn)好,查詢后發(fā)現(xiàn)果然有這種語法,特此分享。之前寫過c++和Java,在for后接else還是第一次見。
1、試驗# eg1import numpy as npfor i in np.arange(5): print ielse: print('hello?')# 0# 1# 2# 3# 4# hello?
可以發(fā)現(xiàn),在for正常結(jié)束后,break中的語句進(jìn)行了執(zhí)行。
# eg2import numpy as npfor i in np.arange(5): print i if (i == 3):breakelse: print('hello?')# 0# 1# 2# 3
在這個例子當(dāng)中,i==3的時候break出了循環(huán),然后else當(dāng)中的語句就沒有執(zhí)行。
2、總結(jié)總結(jié)起來比較簡單,如果for循環(huán)正常結(jié)束,else中語句執(zhí)行。如果是break的,則不執(zhí)行。
工程性代碼寫的比較少,暫時沒有想到很好的場景,為了不對其他同學(xué)造成干擾,這種形式還是少些一點較好。
官方文檔也有解釋:
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
補充:python里for和else的搭配
用找質(zhì)數(shù)作為代碼示例for i in range(2,10): for n in range(2,i):if i % n == 0: #print(i, ’=’, n, ’*’, i//n) break else:print(’found it %s’ %i)
注意:這里的 else 并不屬于 if 代碼塊
根據(jù)官方文檔的解釋理解的意思:當(dāng)?shù)膶ο蟮瓴榭諘r,位于else的語句將會執(zhí)行,而如果在for循環(huán)里有break時,則會直接終止循環(huán),并不會執(zhí)行else里的代碼
寫一個簡單例子,用來輔助理解for i in range(10): if i == 7:print(’found it %s’%i)breakelse: print(’not found’)
可以先運行代碼,看一下運行結(jié)果,然后將代碼塊里的break注釋掉再運行一遍,與第一次運行的結(jié)果進(jìn)行比較,就會發(fā)現(xiàn)不同
補充:python中for—else的用法,執(zhí)行完for執(zhí)行else
結(jié)束for循環(huán)后執(zhí)行elsefor i in range(5): print(i)else: print('打印else')
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門精解之結(jié)構(gòu)與語法2. html清除浮動的6種方法示例3. CSS3實現(xiàn)動態(tài)翻牌效果 仿百度貼吧3D翻牌一次動畫特效4. 原生js XMLhttprequest請求onreadystatechange執(zhí)行兩次的解決5. 刪除docker里建立容器的操作方法6. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法7. asp在iis7報錯行號不準(zhǔn)問題的解決方法8. asp批量添加修改刪除操作示例代碼9. 三個不常見的 HTML5 實用新特性簡介10. ASP中解決“對象關(guān)閉時,不允許操作。”的詭異問題……
