協(xié)程背景
早期的協(xié)程是用yield來實現(xiàn)的,但是代碼特別難懂, python3.5之后的版本, 使用 async 關(guān)鍵字來定義的函數(shù)。調(diào)用該函數(shù),會返回一個協(xié)程對象
async和yield對比
不同點:
1.1 yield語法比較復(fù)雜,async語法簡單
yield:b=yield a,yield右邊的a是第一次的返回值,左邊的b是第二次執(zhí)行的輸入值,最后還有一個return是最后一次返回值
async:方法前面加async,做send參數(shù)時,只能傳None,代碼可讀性大大提高了, 開發(fā)者只需要關(guān)注傳參和返回值, 而不需要花額外精力去理解yield左右的變量
1.2 async只需要send一次就可以獲得返回值,yield要send2次
例子說明
分別用yield和async的方式, 實現(xiàn)協(xié)程
async def req1(param):
return param
def req2(param):
res = yield param
return res
def print_value(f, args):
try:
b = f.send(args)
except StopIteration as e:
print(f'{f.__name__}返回值 {e.value}')
return e.value
else:
print(f'{f.__name__}接收 {b}')
return b
g1 = req1(1)
print_value(g1, None)
g2 = req2(2)
res = print_value(g2, None)
print_value(g2, res)
'''
結(jié)果:
req1返回值 1
req2接收 2
req2返回值 2
'''
審核編輯:劉清
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67501 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90025
發(fā)布評論請先 登錄
如何用好 C 語言函數(shù)的返回值?
C語言與C++的區(qū)別及聯(lián)系
關(guān)鍵字volatile的含意
interrupt關(guān)鍵字使用
結(jié)構(gòu)體聲明與定義
Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請求示例
C語言的編程技巧
哪些場合會用到volatile關(guān)鍵字?
天眼查平臺關(guān)鍵字搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南
1688平臺關(guān)鍵字搜索商品API接口技術(shù)實踐指南
亞馬遜平臺根據(jù)關(guān)鍵字搜索商品API接口
亞馬遜 SP-API 深度開發(fā):關(guān)鍵字搜索接口的購物意圖挖掘與合規(guī)競品分析
阿里巴巴國際站關(guān)鍵字搜索 API 實戰(zhàn):從多條件篩選到商品列表高效獲客
python語言之使用async關(guān)鍵字來定義函數(shù)
評論