新聞中心
(推薦操作系統(tǒng):windows7系統(tǒng)、Python 3.9.1、DELL G3電腦。)

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比古縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式古縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋古縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
注意,在生成器已經(jīng)執(zhí)行時(shí)調(diào)用下面的任何生成器方法會(huì)引發(fā) ValueError 異常。
1、__next__
開(kāi)始執(zhí)行一個(gè)生成器或者從上一次 yield 語(yǔ)句后繼續(xù)執(zhí)行。當(dāng)使用該方法繼續(xù)(注意是繼續(xù)而不是第一次執(zhí)行)時(shí),那么當(dāng)前 yield 的返回值為 None,直到執(zhí)行到下一次的 yield 語(yǔ)句時(shí),yield 語(yǔ)句后的表達(dá)式的結(jié)果才會(huì)返回給調(diào)用者。當(dāng)?shù)鹘Y(jié)束時(shí)會(huì)拋出 StopIteration 異常。
該方法會(huì)被 for 以及內(nèi)置函數(shù) next 隱式的調(diào)用。
2、send
繼續(xù)執(zhí)行生成器(注意是繼續(xù)而不是第一次執(zhí)行),并發(fā)送一個(gè)值到生成器函數(shù)。send 方法的參數(shù)是下一個(gè) yield 語(yǔ)句的返回值,前提是 yield 語(yǔ)句中要事先接收它傳遞的參數(shù)。如果使用該方法啟動(dòng)(也就是第一次執(zhí)行)生成器,必須使用 None 作為其參數(shù),因?yàn)榇藭r(shí)還沒(méi)有 yield 能夠接收它的值(畢竟接收該值的語(yǔ)句還沒(méi)有開(kāi)始執(zhí)行)。
def fn():
a = 0
while True:
a += 1
r = yield # r 就是接收 send 參數(shù)的變量
print('{} => {}'.format(a, r))
>>> f = fn()
>>> f.send('a') # 不傳遞 None 的后果
Traceback (most recent call last):
File "/opt/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
f.send('a')
TypeError: can't send non-None value to a just-started generator
>>> next(f) # 也可以不傳遞 None 而是使用 next 執(zhí)行,兩種方式都可以
>>> f.send('a')
1 => a
>>> f.send('b')
2 => b 以上就是python生成器調(diào)用方法引發(fā)異常,希望能對(duì)大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
網(wǎng)頁(yè)名稱:創(chuàng)新互聯(lián)Python教程:python生成器調(diào)用方法引發(fā)異常
分享網(wǎng)址:http://m.fisionsoft.com.cn/article/dpsdcch.html


咨詢
建站咨詢
