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

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

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

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

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

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

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

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

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

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

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

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

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

def gen():
    print('111111')
    yield '111111'
    print('222222')
    return '222222'
    print('333333')
    yield '333333'
g = gen()
print(g)  # 
next(g)   # 111111
next(g)   # 222222, 拋出異常
5.生成器函數(shù)的使用場(chǎng)景
# 死循環(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),不會(huì)一直執(zhí)行,仍舊是執(zhí)行多少次next(),返回多少個(gè)值;

6.生成器函數(shù)中的語(yǔ)法糖
# 普通生成器函數(shù)way1
def way1():
    for i in range(5):
        yield i
# 帶語(yǔ)法糖的生成器函數(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
  • 語(yǔ)法糖指那些沒(méi)有給計(jì)算機(jī)語(yǔ)言添加新功能,而只是對(duì)人類來(lái)說(shuō)更“甜蜜”的語(yǔ)法;

  • 語(yǔ)法糖給程序員提供了更實(shí)用的編碼方式,有益于更好的編碼風(fēng)格,更易讀;

  • 生成器的語(yǔ)法糖也就是生成器的一種語(yǔ)法,作用是使代碼更加簡(jiǎn)潔;

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


本文名稱:Python中怎么實(shí)現(xiàn)一個(gè)生成器函數(shù)
標(biāo)題路徑:http://weahome.cn/article/pshigp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部