Python極簡筆記 6 異常 三神器

2021-10-04 23:51:46 字數 3225 閱讀 3991

二、生成器

三、迭代器

四、裝飾器(函式式程式設計)

2.裝飾器

異常名稱

注釋asserterror

斷言語句失敗丟擲

attributeerror

嘗試訪問未知的物件屬性

indexerror

索引超出序列的範圍

keyerror

字典中查詢乙個不存在的關鍵字

keyboardinterrupt

使用者輸入中斷鍵(ctrl+c)

memoryerror

記憶體溢位(可通過刪除物件釋放記憶體)

nameerror

嘗試訪問乙個不存在的變數

oserror

作業系統產生的異常(例如開啟乙個不存在的檔案)

overflowerror

數值運算超出最大限制

syntaxerror

python的語法錯誤

zerodivisionerror

除數為零

斷言語句

功能:用於驗證程式中某個變數是否為預期值,通常用來判斷程式中是否出現了明顯非法的資料,如果出現了終止程式以免導致嚴重後果,同時也便於查詢錯誤。

assert 表示式						#斷定表示式是true,否則,丟擲asserterror異常

c_str = "runoob2016"

assert c_str.isnumeric() #返回assertionerror,及行位置,並終止程式

功能:對於龐大的集合,只定義生成規則,不實際生成集合(節省記憶體),現用現生成資料

功能:與生成器配合使用,依次讀取資料

max

=int

(input

('enter the max num:'))

n =0

while

true

:if n <

max:

print

(next

(f))

#next(生成器),next()函式的值為生成器yield語句的num

else

:break

n +=

1print

('done'

)

超邊界:

max

=int

(input

('enter the max num:'))

n =0

for i in f:

##for迴圈隱含next()函式

if n <

max:

print

(i)else

:break

n +=

1print

('done'

)

def

outer

( a )

:# outer是外部函式 a和b都是外函式的臨時變數

b =10def

inner()

:# inner是內函式,閉包函式

print

(a+b)

# 在內函式中,用到了外函式的臨時變數

return inner # 外函式的返回值是內函式的引用

if __name__ ==

'__main__'

:demo = outer(5)

demo(

)# 列印輸出15

# 此處即使改變outer()的函式體,demo()的值也不會改變,但會影響demo2

demo2 = outer(7)

# 返回的是inner(7),只是做了個引用,不會有任何顯示

demo2(

)# 列印輸出17

# 定義無輸入值(除了函式名func)的閉包,func為外部巢狀函式中的變數

defc_dec_0

(func)

:def

(*ar**,

**kw)

:# 順序執行語句一:此處為新增的功能

print

('這是內函式語句'

)# 順序執行語句二:執行原函式

# 閉包要素二:呼叫了外部函式的變數

func(

*ar**,

**kw)

# 閉包要素三:返回內嵌函式名

# 裝飾器寫法:功能相當於將now = c_dec_0(now)

# 語句貼在def now(...)上

@c_dec_0

# (*ar**,**kw)代表傳入0~無窮大個引數,

# 包含列表和字典等任意型別的引數

defnow

(*ar**,

**kw)

:# 函式功能就是:傳進來什麼就列印什麼

print

(*ar**,

**kw)

now(

'good'

)>>

>這是內函式語句

>>

>good

# 首層傳裝飾器的輸入值

defc_dec_1

(text)

:def

decorator

(func)

:# --------跟無輸入值裝飾器一樣:起始--------

def(

*args,

**kw)

:print

("這是新增的功能部分"

)# 這是執行被修飾的原函式

func(

*args,

**kw)

# --------跟無輸入值裝飾器一樣:結束---------

return decorator

@c_dec_1(

'execute'

)# 傳入引數的裝飾器

# (*ar**,**kw)代表傳入0~無窮大個引數,包含列表和字典等任意型別的引數

defnow

(*args,

**kw)

:print

(*args,

**kw)

now(

'good'

)# 函式呼叫

>>

>execute now

>>

>good

更多裝飾器,此處

python極簡筆記 異常

異常 def exceptionfunc print 7 0 exceptionfunc 使用try except 處理異常 def sloveexecption try print 7 0 except zerodivisionerror print divide by zero sloveexe...

Python 極簡教程(三)資料型別

每種語言都有各種資料型別。這就像在現實生活中,我們計數的時候需要用到數字,在表述金額 重量 距離等需要精確計數時用到小數,在日常交談中要用文字,等等。在計算機語言中,為了表述不同的情況,也需要用到各種資料型別。在 python 主要有數值型別 int,float 字串型別,布林型和空值。python...

Python 極簡教程(三)資料型別

每種語言都有各種資料型別。這就像在現實生活中,我們計數的時候需要用到數字,在表述金額 重量 距離等需要精確計數時用到小數,在日常交談中要用文字,等等。在計算機語言中,為了表述不同的情況,也需要用到各種資料型別。在 python 主要有數值型別 int,float 字串型別,布林型和空值。python...