協(xié)程背景
早期的協(xié)程是用yield來(lái)實(shí)現(xiàn)的,但是代碼特別難懂, python3.5之后的版本, 使用 async 關(guān)鍵字來(lái)定義的函數(shù)。調(diào)用該函數(shù),會(huì)返回一個(gè)協(xié)程對(duì)象
async和yield對(duì)比
不同點(diǎn):
1.1 yield語(yǔ)法比較復(fù)雜,async語(yǔ)法簡(jiǎn)單
yield:b=yield a,yield右邊的a是第一次的返回值,左邊的b是第二次執(zhí)行的輸入值,最后還有一個(gè)return是最后一次返回值
async:方法前面加async,做send參數(shù)時(shí),只能傳None,代碼可讀性大大提高了, 開(kāi)發(fā)者只需要關(guān)注傳參和返回值, 而不需要花額外精力去理解yield左右的變量
1.2 async只需要send一次就可以獲得返回值,yield要send2次
例子說(shuō)明
分別用yield和async的方式, 實(shí)現(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__}接收 ')
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文章
4381瀏覽量
64890 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86760
發(fā)布評(píng)論請(qǐng)先 登錄
micro 關(guān)鍵字搜索全覆蓋商品,并通過(guò) API 接口提供實(shí)時(shí)數(shù)據(jù)
基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)
單片機(jī)編程關(guān)鍵字之volatile
帶你在單片機(jī)編程中熟練使用const(可下載)
const定義的是不是常量
C語(yǔ)言關(guān)鍵字分別發(fā)生在哪個(gè)階段
C++新手容易犯的十個(gè)編程錯(cuò)誤
對(duì)比Python與Java編程語(yǔ)言
Python常用函數(shù)大全
基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):HelloOpenharmony
使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測(cè)

評(píng)論