Python 中 send的解释
生活随笔
收集整理的這篇文章主要介紹了
Python 中 send的解释
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
def create_num(n):a, b = 0, 1i= 0while i < n:ret= yield aprint("ret的值為:{}".format(ret))a, b = b, a+bi += 1return "-----ok-----"obj = create_num(10)# 使用next函數取值
print(next(obj))# 使用send函數取值并傳入數據:“haha”
print(obj.send("haha"))
?
0 ret的值為:haha 1send函數
1、說明:除了使用【next】函數可以啟動生成器,還可以使用【send】函數啟動。
2、特點: ?啟動生成器后,并且發送數據至生成器中
3、send函數的應用場景:當生成器生成一個新的值時,通過send函數傳遞一個新的參考值,然后根據這個參考值去做事情。
4、語法:生成器對象.send(參數)
5、查看send函數的執行流程:
第一次調用【next】函數時,程序執行到【yield】關鍵字處暫停,并將局部變量a的值返回。返回值為:0
第二次調用【send】函數時,程序從上一次【yield】關鍵字暫停處開始執行,
并將send函數傳過來的參數賦值給局部變量ret,然后程序繼續往下執行,
直到遇到了yield關鍵字,程序暫停,并返回yied關鍵字后面的值給send。
一開始就使用send會報錯
TypeError: can't send non-None value to a just-started generator
報錯原因:這是因為第一次執行生成器是從函數內部的第一行代碼開始執行的。
而第一行代碼中并未設定一個變量來接收send函數傳遞過來的數據,所以會報錯。
解決方法:
第一次啟動生成器,使用【next】方法
第一次啟動生成器,使用【send】方法,并傳遞【None】關鍵字。(一般不使用該方法)
?
?
?
總結
以上是生活随笔為你收集整理的Python 中 send的解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rancher 企业级容器管理平台
- 下一篇: jzoj1273 袁绍的刁难(math)