python宇晨_Python 学习第11天 yield 和异常处理
主要功能:把一個(gè)函數(shù)變成生成器
復(fù)習(xí):將列表變成生成器a=iter([i for i in range(10)])
a.next()
使用yield將函數(shù)變成生成器,保存函數(shù)執(zhí)行狀態(tài)
yield簡(jiǎn)單代碼
使用yield可以控制函數(shù)的執(zhí)行過(guò)程------------------------(非常重要,后續(xù)補(bǔ)充)
異常處理:
1.常見(jiàn)的異常處理和簡(jiǎn)單說(shuō)明
1)AttributeError? ? ? ? ? ? ? ? ? ? 視圖訪(fǎng)問(wèn)一個(gè)對(duì)象沒(méi)有的樹(shù)形,對(duì)象沒(méi)有該屬性,會(huì)報(bào)錯(cuò)
2)IOError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸入/輸出異常;基本上是無(wú)法打開(kāi)文件
3)ImportError? ? ? ? ? ? ? ? ? ? ? ? 無(wú)法引入模塊或包,基本上是路徑問(wèn)題或者名稱(chēng)錯(cuò)誤
4)IndentationError? ? ? ? ? ? ? ? ?語(yǔ)法錯(cuò)誤(的子類(lèi));代碼沒(méi)有正確對(duì)齊
5)IndexError? ? ? ? ? ? ? ? ? ? ? ? ? ?下標(biāo)索引超出序列長(zhǎng)度,長(zhǎng)度為3,卻試圖訪(fǎng)問(wèn)第5個(gè)元素
6)KeyError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 試圖訪(fǎng)問(wèn)字典里不存在的鍵
7)KeyboardIntereupt? ? ? ? ? ? ? ? Ctrl+C被按下
8)NameError? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用一個(gè)還未被賦予對(duì)象的變量
9)SyntaxError? ? ? ? ? ? ? ? ? ? ? ? ? ? python代碼非法,代碼不能編譯(語(yǔ)法錯(cuò)誤)
10)TypeError? ? ? ? ? ? ? ? ? ? ? ? ? ? ?傳入對(duì)象類(lèi)型與要求不符合
11)ValueError? ? ? ? ? ? ? ? ? ? ? ? ? ? ?傳入一個(gè)調(diào)用者不期望的值,即使值的類(lèi)型是正確的
12)UnboundLocalError? ? ? ? ? ? ? ?試圖訪(fǎng)問(wèn)一個(gè)還未被設(shè)置的局部變量,基本上是由于另有一個(gè)同名的全局變量,導(dǎo)致你以為訪(fǎng)問(wèn)它
異常處理捕捉和處理:
常見(jiàn)異常處理
自定義異常處理:
首先自定義一個(gè)類(lèi),并繼承異常的父類(lèi)
finally:無(wú)論try是否拋出異常永遠(yuǎn)執(zhí)行finall中的代碼,通常用來(lái)執(zhí)行文件關(guān)閉,斷開(kāi)服務(wù)器連接等功能。不管是否有異常,都會(huì)執(zhí)行finally之后的代碼
finally最終執(zhí)行的代碼
else:只有沒(méi)有異常的情況下,才會(huì)執(zhí)行else后面的代碼
else代碼執(zhí)行
打印出,出錯(cuò)的信息:
出錯(cuò)信息
在異常后面添加一個(gè)變量(變量名可以隨便定義,圖中使用的是e)
報(bào)錯(cuò)信息如下:
異常捕捉和報(bào)錯(cuò)信息顯示
異常捕捉是抓不到語(yǔ)法和縮進(jìn)的錯(cuò)誤。因?yàn)閜ython在執(zhí)行過(guò)程中,首先會(huì)先轉(zhuǎn)成pyc格式的代碼,在此時(shí)就已經(jīng)檢測(cè)了語(yǔ)法和縮進(jìn)的樣式問(wèn)題。其他都是在執(zhí)行過(guò)程中被捕捉到的。可以將上面的兩個(gè)理解成在代碼執(zhí)行之前就已經(jīng)被pyc給檢測(cè)出來(lái)了。
總結(jié)
以上是生活随笔為你收集整理的python宇晨_Python 学习第11天 yield 和异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: push方法java_万字长文深入浅出谈
- 下一篇: mysql php apache源码_配