0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python語言之使用async關鍵字來定義函數

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-24 11:12 ? 次閱讀

協程背景

早期的協程是用yield來實現的,但是代碼特別難懂, python3.5之后的版本, 使用 async 關鍵字來定義的函數。調用該函數,會返回一個協程對象

async和yield對比

不同點:

1.1 yield語法比較復雜,async語法簡單

yield:b=yield a,yield右邊的a是第一次的返回值,左邊的b是第二次執(zhí)行的輸入值,最后還有一個return是最后一次返回值

async:方法前面加async,做send參數時,只能傳None,代碼可讀性大大提高了, 開發(fā)者只需要關注傳參和返回值, 而不需要花額外精力去理解yield左右的變量

1.2 async只需要send一次就可以獲得返回值,yield要send2次

例子說明

分別用yield和async的方式, 實現協程


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)

'''
結果:
req1返回值 1
req2接收 2
req2返回值 2
'''


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4344

    瀏覽量

    62839
  • python
    +關注

    關注

    56

    文章

    4804

    瀏覽量

    84910
收藏 人收藏

    評論

    相關推薦

    C語言關鍵字分別發(fā)生在哪個階段

    在編譯的第一個階段:預處理,對一些宏定義做替換。 第二個,const。 C語言中的 const 用于修飾只讀變量,表示變量本身不能修改。 這個關鍵字會在編譯的第二步起作用,也就是編譯。強行修改一個只讀變量,編譯就會提示問題。 第
    的頭像 發(fā)表于 11-24 10:31 ?214次閱讀

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發(fā)表于 10-07 12:44 ?315次閱讀

    基于ArkTS語言的OpenHarmony APP應用開發(fā):HelloOpenharmony

    console.log(typeof data); // number 3.2.2、number TypeScript 提供了 number 關鍵字表示數字類型,它是雙精度 64 位浮點值,既可以表示整數
    發(fā)表于 09-14 12:47

    使用邊緣AI和Sitara處理器進行關鍵字檢測

    電子發(fā)燒友網站提供《使用邊緣AI和Sitara處理器進行關鍵字檢測.pdf》資料免費下載
    發(fā)表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進行<b class='flag-5'>關鍵字</b>檢測

    typedef struct和直接struct的區(qū)別

    在C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C 語言中用于
    的頭像 發(fā)表于 08-20 10:58 ?3050次閱讀

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個呢?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句關鍵字、存儲類型
    的頭像 發(fā)表于 07-06 08:04 ?390次閱讀
    快速掌握C<b class='flag-5'>語言</b><b class='flag-5'>關鍵字</b>

    inline關鍵字被優(yōu)化導致此類函數被布局在flash內,怎么處理?

    問題解決。 但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠! 期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
    發(fā)表于 06-21 12:03

    Go語言中的函數、方法與接口詳解

    Go 沒有類,不過可以為結構體類型定義方法。方法就是一類帶特殊的接收者參數的函數。方法接收者在它自己的參數列表內,位于 func 關鍵字和方法名之間。(非結構體類型也可以定義方法)
    的頭像 發(fā)表于 04-23 16:21 ?891次閱讀

    鴻蒙OS開發(fā)實例:【ArkTS類庫異步并發(fā)async/await】

    async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關鍵字聲明一個函數為異步
    的頭像 發(fā)表于 04-02 20:57 ?1095次閱讀
    鴻蒙OS開發(fā)實例:【ArkTS類庫異步并發(fā)<b class='flag-5'>async</b>/await】

    鴻蒙原生應用開發(fā)-ArkTS語言基礎類庫異步并發(fā)簡述async/await

    async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關鍵字聲明一個函數為異步
    發(fā)表于 03-06 14:44

    C語言中的typedef的應用

    C 語言提供了 typedef 關鍵字,您可以使用它為類型取一個新的名字。下面的實例為單字節(jié)數字定義了一個術語 BYTE。
    發(fā)表于 03-06 11:34 ?426次閱讀
    C<b class='flag-5'>語言</b>中的typedef的應用

    verilog中function和task的區(qū)別

    非常相似,但它們在功能和使用方式上有一些重要的區(qū)別。 定義和聲明方式不同: Function:使用關鍵字"function"定義和聲明。函數
    的頭像 發(fā)表于 02-22 15:40 ?1982次閱讀

    內聯函數定義 為什么需要內聯函數

    inline關鍵字是C99標準的型關鍵字,其作用是將函數展開,把函數的代碼復制到每一個調用處。
    的頭像 發(fā)表于 02-19 12:20 ?571次閱讀

    關鍵字搜索文件夾中某個TXT文件

    文件夾中隨時創(chuàng)造TXT文件,如何及時選出剛創(chuàng)造的文件?或關鍵字搜索出需要的TXT文件?
    發(fā)表于 02-06 15:22

    在NVM和本地\"內存中定義數組(靜態(tài) /global /local)的\"關鍵字是什么?

    在 NVM 和本地\"內存中定義數組(靜態(tài) /global /local)的\"關鍵字是什么? 還有與 32 位對齊的關鍵字怎么樣。
    發(fā)表于 01-25 07:52