摘要:在種,使用關(guān)鍵字定義的迭代器也被稱為生成器迭代器迭代器是訪問集合內(nèi)元素的一種方式。調(diào)用任何定義包含關(guān)鍵字的函數(shù)都不會執(zhí)行該函數(shù),而是會獲得一個隊(duì)?wèi)?yīng)于該函數(shù)的迭代器。
上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第一節(jié):同步與異步I/O
下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第三節(jié):協(xié)程
協(xié)程是Tornado中進(jìn)行異步I/O代碼開發(fā)的方法。協(xié)程使用了Python關(guān)鍵字yield將調(diào)用者掛起和恢復(fù)執(zhí)行。所以在學(xué)習(xí)協(xié)程之前,我們先熟悉一下yield的概念和使用方法,而要想理解yield,需要先理解迭代器的概念。
在Python種,使用yield 關(guān)鍵字定義的迭代器也被稱為【生成器】1、迭代器
迭代器(Iterator)是訪問集合內(nèi)元素的一種方式。迭代器對象從集合的第1個元素開始訪問,直到所有元素都被訪問一遍后結(jié)束。迭代器不能后退,只能前進(jìn)迭代。
Python種最常用迭代器的場景是循環(huán)語句for,它用迭代器封裝集合,并且煮個訪問集合元素以執(zhí)行循環(huán)。
例如:
for number in range(5):#range返回一個列表 print(number)
其中的range()返回一個包含所指定元素的集合,而for語句將其封裝成一個迭代器后訪問,使用iter()可以講列表、集合轉(zhuǎn)換成迭代器,例如:
numbers=[1,2,3,4,5] #t就是迭代器 t=iter(numbers) #打印t對象,以便查看其類型 print(t)
返回結(jié)果:
迭代器與普通Python對象相比,多了一個__next__()方法,每次調(diào)用該方法可以返回一個元素,調(diào)用者(例如for語句)可以通過不斷調(diào)用__next__()方法來煮個訪問集合元素。
例如:
numbers=[1,2,3,4,5] #t就是迭代器 t=iter(numbers) #打印t對象,以便查看其類型 print(t.__next__()) print(t.__next__()) print(t.__next__()) print(t.__next__())
返回結(jié)果:
1 2 3 4
調(diào)用者可以一直調(diào)用__next__()方法,直到返回StopIteration異常。
2、使用yield迭代器在Python編程種的使用范圍很廣,那么開發(fā)者如何定制自己的迭代器呢?答案是使用yield關(guān)鍵字。
調(diào)用任何定義包含yield關(guān)鍵字的函數(shù)都不會執(zhí)行該函數(shù),而是會獲得一個隊(duì)?wèi)?yīng)于該函數(shù)的迭代器。
實(shí)例:
import time def demoIternator(): print("---1---") yield 1 print("---2---") yield 2 print("---3---") yield 3 print("---4---") for x in demoIternator(): print(x) time.sleep(1)
結(jié)果
每次調(diào)用迭代器的__next__()方法,將執(zhí)行迭代器函數(shù),并返回yield的結(jié)果作為迭代返回元素。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42599.html
摘要:上一篇文章第一章異步及協(xié)程基礎(chǔ)第二節(jié)關(guān)鍵字下一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第一節(jié)網(wǎng)站結(jié)構(gòu)使用協(xié)程可以開發(fā)出類似同步代碼的異步行為。協(xié)程函數(shù)可以通過以下三張方式調(diào)用在本身是協(xié)程的函數(shù)內(nèi)通過關(guān)鍵字調(diào)用。 上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第二節(jié):Python關(guān)鍵字yield下一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第...
摘要:上一篇文章開篇下一篇文章第一章異步及協(xié)程基礎(chǔ)第二節(jié)關(guān)鍵字協(xié)程是種推薦的編程方式,使用協(xié)程可以開發(fā)出簡捷高效的異步處理代碼。同步操作,導(dǎo)致進(jìn)程阻塞,直到操作完成異步操作,不會導(dǎo)致請求進(jìn)程阻塞。 上一篇文章:Python:Tornado 開篇下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第二節(jié):Python關(guān)鍵字yield 協(xié)程是Tornado種推薦的編程方式,使用協(xié)...
摘要:上一篇文章第一章異步及協(xié)程基礎(chǔ)第三節(jié)協(xié)程下一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第二節(jié)網(wǎng)站結(jié)構(gòu)路由解析實(shí)例瀏覽器輸入鏈接頁面顯示下面逐行解析上面的代碼做了些什么首先通過語句引入包中的和類。該對象的第一個餐食用于定義程序的路由映射。 上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第三節(jié):協(xié)程下一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第...
摘要:作為網(wǎng)站的基礎(chǔ)框架,于年月日發(fā)布,目前已經(jīng)獲得了很多社區(qū)的支持,并且在一系列不同的場景種得到應(yīng)用。使用該框架,開發(fā)者能夠快速開發(fā)出即安全又強(qiáng)大的用戶身份認(rèn)證機(jī)制,例如機(jī)制用戶身份認(rèn)證防止跨站攻擊等等。 下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第一節(jié):同步與異步I/O Tornado是一個可擴(kuò)展的非阻塞Web服務(wù)器以及相關(guān)工具的總稱。Tornado每秒可以處理...
摘要:上一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第五節(jié)輸出相應(yīng)函數(shù)下一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第七節(jié)安全機(jī)制有兩種方式可改變同步的處理流程異步化針對的處理函數(shù)使用修飾器,將默認(rèn)的同步機(jī)制改為異步機(jī)制。使用異步對象處理耗時(shí)操作,比如本例的。 上一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第五節(jié):RequestHandler:輸出相應(yīng)函數(shù)下一篇文章:Python:...
閱讀 1731·2023-04-25 23:43
閱讀 908·2021-11-24 09:39
閱讀 713·2021-11-22 15:25
閱讀 1710·2021-11-22 12:08
閱讀 1085·2021-11-18 10:07
閱讀 2066·2021-09-23 11:22
閱讀 3338·2021-09-22 15:23
閱讀 2469·2021-09-13 10:32