python生成器調用方法引發異常
(推薦操作系統:windows7系統、Python3.9.1、DELLG3電腦。)
注意,在生成器已經執行時調用下面的任何生成器方法會引發ValueError異常。
1、__next__
開始執行一個生成器或者從上一次yield語句后繼續執行。當使用該方法繼續(注意是繼續而不是第一次執行)時,那么當前yield的返回值為None,直到執行到下一次的yield語句時,yield語句后的表達式的結果才會返回給調用者。當迭代器結束時會拋出StopIteration異常。
該方法會被for以及內置函數next隱式的調用。
2、send
繼續執行生成器(注意是繼續而不是第一次執行),并發送一個值到生成器函數。send方法的參數是下一個yield語句的返回值,前提是yield語句中要事先接收它傳遞的參數。如果使用該方法啟動(也就是第一次執行)生成器,必須使用None作為其參數,因為此時還沒有yield能夠接收它的值(畢竟接收該值的語句還沒有開始執行)。
deffn():
a=0
whileTrue:
a+=1
r=yield#r就是接收send參數的變量
print('{}=>{}'.format(a,r))
>>>f=fn()
>>>f.send('a')#不傳遞None的后果
Traceback(mostrecentcalllast):
File"/opt/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py",line2910,inrun_code
exec(code_obj,self.user_global_ns,self.user_ns)
File"",line1,in
f.send('a')
TypeError:can'tsendnon-Nonevaluetoajust-startedgenerator
>>>next(f)#也可以不傳遞None而是使用next執行,兩種方式都可以
>>>f.send('a')
1=>a
>>>f.send('b')
2=>b
以上就是python生成器調用方法引發異常,希望能對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。