真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

迭代器與生成器yield-創(chuàng)新互聯(lián)

迭代器

成都網(wǎng)站設計、做網(wǎng)站,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)建站已向1000多家企業(yè)提供了,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)絡營銷等服務!設計與技術結合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質網(wǎng)站。

迭代器是一個可以記住遍歷的位置的對象,迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。

方法:iter() ,next()。

載體:字符串,列表或元組對象都可用于創(chuàng)建迭代器:

示例:for循環(huán)取出列表和字符串中的元素

list=[1,2,3]
it_list = iter(list)    
for it in it_list:
    print it
str = "abc"
it_str = iter(str)
for it in it_str:
    print it

生成器

使用了yield 的函數(shù)被稱為生成器(generator),生成器是一個返回迭代器的函數(shù),只能用于迭代操作。

在調用生成器運行的過程中,每次遇到 yield 時函數(shù)會暫停并保存當前所有的運行信息,返回yield的值。它大的特點在于并非一次性全部生成,而在于每次調用都生成當前一輪循環(huán),再次調用則再次生成,直到循環(huán)結束或是本次生成數(shù)據(jù)已到終點(例如文件讀取完畢或是判斷條件變成false)。

使用yield的函數(shù)并不會一次執(zhí)行完畢,僅僅返回一個迭代對象,當讀取該迭代對象時,它并沒有完全讀取迭代內容,而是根據(jù)代碼需求每次讀取一部分,從而節(jié)約了資源。

函數(shù)執(zhí)行結束時,生成器自動拋出StopIteration異常,表示迭代完成,在for循環(huán)里,無需處理 StopIteration 異常,循環(huán)會正常結束。

在一個生成器函數(shù)中,如果沒有return,則默認執(zhí)行至函數(shù)完畢,如果在執(zhí)行過程中return,則直接拋出 StopIteration 終止迭代。

可以利用 isgeneratorfunction 判斷一個函數(shù)是否是一個特殊的 generator 函數(shù)isgeneratorfunction(readfile)

while True必須有,否則迭代器無法駐留,輪詢一行就會結束;

示例:yield字段將readfile函數(shù)變成一個文件迭代器,每次的輸出都是文件中的一行內容,for循環(huán)調用該函數(shù)時,每次執(zhí)行到y(tǒng)ield data語句時,該函數(shù)就會將當前數(shù)據(jù)保留并傳遞給item,接著再次下一個循環(huán)。

def readfile():
    seek = 0
    while True:
        with open('test_server.py','r') as f:
            f.seek(seek)
            data = f.readline()
            if data:
                seek = f.tell()
                yield data
            else:
                return
 
for item in readfile():
    print item

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。


網(wǎng)站題目:迭代器與生成器yield-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/djschd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部