Python基礎學習(第8天)

2022-06-24 19:51:13 字數 1916 閱讀 8501

先補充些iter函式的用法:iter()其實就是乙個迭代器,引數可傳個list、dict等等,然後可通過呼叫next函式獲取下乙個元素,預設並未指向物件的第乙個元素,可理解為指向了第乙個元素的前面的位置。

第8課:異常處理

1、異常處理可以提高程式的容錯性

re = iter(range(4))

for i in range(100):

print

re.next()

print

'hello

'

迴圈到第6次,由於re.next()沒有元素返回了,會有stopiteration的異常。整個程式將會中斷。寫程式時,如果知道可能犯錯的地方或犯錯的型別,可以針對異常型別定義好'應急方案'

re = iter(range(5))

try:

for i in range(100):

printre.next()

print 'hello'

exceptstopiteration:

print 'here is end',i

將try中容易出錯的部分,後面跟上except,來說明如果try中發生stopiteration時,程式該做的事情,如果沒有發生異常,except部分將被跳過。

2、異常處理的完成語法結構:

try

:except

exception1:

except

exception2:

except:

......

else

:finally:

如果try中有異常發生,將執行except。異常層層比較,看是否是exception1, exception2...,直到找到其歸屬,執行相應的except中的語句。如果except後面沒有任何引數,那麼表示所有的exception都交給這段程式處理。比如:

try:

print(a*2)

excepttypeerror:

print("typeerror")

except:

print("not type error & error noted")

由於a沒有定義,所以是nameerror。異常最終被except:部分的程式捕捉。???

3、如果無法將異常交給合適的物件,異常將繼續向上層丟擲,直到**捉或者造成主程式報錯。比如下面的程式

deftest_func():

try:

m = 1/0

exceptnameerror:

print("catch nameerror in the sub-function")

try:

test_func()

exceptzerodivisionerror:

print("catch error in the main program")

子程式的try...except...結構無法處理相應的除以0的錯誤,所以錯誤被拋給上層的主程式。

如果try中沒有異常,那麼except部分將跳過,執行

else中的語句。

finally是無論是否有異常,最後都要做的一些事情。

流程如下,

try->異常->except->finally

try->無異常->else->finally

我們也可以自己寫乙個丟擲異常的例子:

stopiteration是乙個類。丟擲異常時,會自動有乙個中間環節,就是生成stopiteration的乙個物件。python實際上丟擲的,是這個物件。當然,也可以自行生成物件:

raise stopiteration()

其中上圖中想要列印出異常資訊『引數為空』  直接print e即可。

Python基礎學習總結 第8天

比較的是物件的值是否相等 is is not 比較的是物件的id是否相等 比較2個物件是否是同乙個物件 字典的作用和列表類似,都是用來儲存物件的容器 列表儲存資料的效能好,但是查詢資料的效能差,字典正好與之相反 在字典中每乙個元素都有唯一的名字,通過這個唯一的名字可以找到指定的元素 這個唯一的名字我...

學習Python第8天

物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。在 python 中定義私有變數只需要在變數名或函式名前加上 兩個下劃線,那麼這個函式或變數就會為私有的了。class derivedclassname baseclassn...

python學習筆記 第8天

繼續今天的python學習 昨天我們說到了多執行緒共享資料 全域性變數 那麼今天我們就緊接著來說一下多執行緒不共享資料的使用方式 import threading import time def test1 the number 0 for i in range 100 the number 1 t...