Python異常 推導特性 迭代器 生成器

2021-08-20 12:48:58 字數 2417 閱讀 9777

一.異常

1.語法:

try:

**塊except 異常型別:

捕獲異常後的操作

else:

沒有異常發生,進入else

finally:

無論是否發生異常,finally總是進入

def testexception():

try:

a=int(input("請輸入被除數"))

b=int(input("請輸入除數"))

c=a/b

except zerodivisionerror as ex:

print("捕獲異常,異常資訊是:",ex) #ex表示異常資訊message

print("除數不能為0")

except valueerror:

print("輸入值必須為數字")

else:

print("沒有異常發生")

finally:

print("最終**塊")

2.手動拋異常

語法:raise exception(message資訊,args引數)

def testexception():

a=int(input("請輸入被除數"))

b=int(input("請輸入除數"))

if b==0:

raise exception("除數不能為0",b)

a/btry:

testexception()

except exception as e:

print(e)

二.推導特性

推導式是python中很強大的、很受歡迎的特性,具有語言簡潔,速度快等優點

#列表推導

numbers=[x for x in range(100) if x%3==0]

print(numbers)

def squared(x):

return x*x

multiples=[squared(i) for i in range(30) if i%3 is 0]

print(multiples)

#字典推導

dic=

print(dic.items())

dic2=

print(dic2)

#集合推導

#返回的是set,相同值只有乙個

squared=

print(squared)

strs=['a','if','file','superman','el']

lens=

print(lens)

三.迭代器

迭代器是乙個可以記住遍歷的位置的物件。

迭代器有兩個基本的方法:__iter__() 和 __next__()。 

__iter__方法:返回迭代器自身。可以通過python內建函式iter()呼叫。

__next__方法:當next方法被呼叫的時候,迭代器會返回它的下乙個值,如果next方法被呼叫,但迭代器沒有只可以返回,就會引發乙個stopiteration異常。該方法可以通過 python 內建函式next()呼叫。 

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

建立乙個迭代器有3種方法,其中前兩種分別是:

1.為容器物件新增 __iter__() 和 __next__() 方法

2. 內建函式 iter() 將可迭代物件轉化為迭代器

3.就是生成器(generator)。生成器通過 yield 語句快速生成迭代器,省略了複雜的 __iter__() & __next__() 方式

迭代器使用細則:

迭代器不能回退

迭代器非執行緒安全

迭代器用乙個物件,讀取乙個。節省空間

迭代器沒有索引 可以用enumrate(iterable) 獲取元素和索引的元組

ps:迭代器中,第二次迴圈不會取到值,因為第一次會把所有值取完

四.生成器

第一種方式:將列表的改為(),裡面可以寫推導

生成器只要呼叫next()方法即可得到下乙個值,到最後乙個後異常(stopiteration)退出

用表示式做生成器

例:test=(x for x in rang(10))

next(test)或test.__next__()

第二種方式:

在方法內使用yield做生成器,這樣呼叫此方法時,會得出乙個結果:generator object...

然後也是可以呼叫next(),

每到yield時,就會停止,返回當前這個值,可以一次一次next()呼叫

python日誌 推導 迭代器

日誌 importlogging log format asctime s levelname s message s logging.basicconfig level logging.debug,format log format deftest try a int input 請輸入乙個被除數...

Python的推導,迭代器,日誌

推導式包含 列表推導式 字典推導式 集合推導式 巢狀列表推導式 列表 例 names bob tom alice jerry wendy smith print name.upper for name in names if len name 3 輸出 alice jerry wendy smith...

python高階特性 迭代器

本文 廖雪峰的官方 我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 ite...