成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中怎么實現(xiàn)一個生成器函數(shù)

Python中怎么實現(xiàn)一個生成器函數(shù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)主營雁江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,雁江h(huán)5重慶小程序開發(fā)搭建,雁江網(wǎng)站營銷推廣歡迎雁江等地區(qū)企業(yè)咨詢

1.生成器
  • 在 Python 中,一邊循環(huán)一邊計算的機制,稱為生成器(Generator);

  • 生成器是一個返回迭代器的函數(shù),只能用于迭代操作;

2.什么是生成器函數(shù)
  • 生成器是Python中的一個對象,對這個對象進行操作,可以依次生產(chǎn)出按生成器內(nèi)部運算產(chǎn)生的數(shù)據(jù);

  • 生成器函數(shù)指的是函數(shù)體中包含yield關(guān)鍵字的函數(shù)(yield就是專門給生成器用的return);

  • 生成器可以通過生成器表達式和生成器函數(shù)獲取到;

3.生成器函數(shù)的定義
def add():
    for i in range(10):
        yield i
g = add()
print(g)  # <generator object add at 0x10f6110f8>
print(next(g))  # 0
print(next(g))  # 1
  • 我們可以通過yield關(guān)鍵字來定義一個生成器函數(shù),這個生成器函數(shù)返回值就是一個生成器對象;

4.生成器函數(shù)的調(diào)用
def gen():
    print('111111')
    yield '111111'
    print('222222')
    yield '222222'
    print('333333')
    yield '333333'
g = gen()
print(g)  # <generator object gen at 0x0026BBF0>
next(g)   # 111111
next(g)   # 222222
next(g)   # 333333
next(g, 'over')
  • 生成器函數(shù)可以使用next()迭代,且每次next()只會返回一次yield的值,然后暫停,下次一次next()時會在當前位置繼續(xù),如果沒有元素可以迭代了,還 執(zhí)在行next()則需要給定一個默認值,不給默認值會報錯;

  • 如果在生成器函數(shù)中使用return,則會終止迭代,且不能得到返回值;

def gen():
    print('111111')
    yield '111111'
    print('222222')
    return '222222'
    print('333333')
    yield '333333'
g = gen()
print(g)  # <generator object gen at 0x0026BBF0>
next(g)   # 111111
next(g)   # 222222, 拋出異常
5.生成器函數(shù)的使用場景
# 死循環(huán)
def way():
    i = 0
    while True:
        i += 1
        yield i
c = way()
print(next(c)) # 1
print(next(c)) # 2
print(next(c)) # 3
print(next(c)) # 4
print(next(c)) # 5
  • 在生成器中使用死循環(huán),不會一直執(zhí)行,仍舊是執(zhí)行多少次next(),返回多少個值;

6.生成器函數(shù)中的語法糖
# 普通生成器函數(shù)way1
def way1():
    for i in range(5):
        yield i
# 帶語法糖的生成器函數(shù)way2
def way2():
    yield from range(5)
#循環(huán)輸出way1
for i in way1():
    print(i)  #0 1 2 3 4
#循環(huán)輸出way2
for j in way2():
    print(j)  #0 1 2 3 4
  • 語法糖指那些沒有給計算機語言添加新功能,而只是對人類來說更“甜蜜”的語法;

  • 語法糖給程序員提供了更實用的編碼方式,有益于更好的編碼風格,更易讀;

  • 生成器的語法糖也就是生成器的一種語法,作用是使代碼更加簡潔;

看完上述內(nèi)容,你們掌握Python中怎么實現(xiàn)一個生成器函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁標題:Python中怎么實現(xiàn)一個生成器函數(shù)
URL地址:http://jinyejixie.com/article18/pshigp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站網(wǎng)站建設(shè)、服務(wù)器托管網(wǎng)站改版、網(wǎng)站制作、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
白玉县| 咸丰县| 隆昌县| 吉林市| 万宁市| 恩平市| 剑阁县| 延津县| 成武县| 蚌埠市| 无为县| 溧水县| 土默特右旗| 东山县| 社会| 高雄县| 宣威市| 成都市| 沾化县| 黄大仙区| 陇南市| 浦东新区| 嘉义市| 彭泽县| 高阳县| 象山县| 英山县| 九龙县| 和硕县| 安泽县| 湖口县| 临朐县| 都江堰市| 高阳县| 永靖县| 哈密市| 临夏县| 同德县| 云龙县| 海阳市| 乳源|