吴忠躺衫网络科技有限公司

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

完善資料讓更多小伙伴認識你,還能領取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是第二次執行的輸入值,最后還有一個return是最后一次返回值

async:方法前面加async,做send參數時,只能傳None,代碼可讀性大大提高了, 開發者只需要關注傳參和返回值, 而不需要花額外精力去理解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__}接收 {b}')
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
'''


審核編輯:劉清

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

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
收藏 人收藏

    評論

    相關推薦

    C語言關鍵字分別發生在哪個階段

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

    C語言關鍵字--typedef

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

    基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony

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

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

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

    typedef struct和直接struct的區別

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

    快速掌握C語言關鍵字

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

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

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

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

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

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

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

    PHP用戶定義函數詳細講解

    描述 在所有編程和腳本語言中,函數是可以在程序中重復使用的語句塊。在 PHP 中,函數的概念與另一種語言(如“C”)中的概念相同。標準 PHP 發行版中有 1,000 多個內置
    的頭像 發表于 03-20 14:27 ?448次閱讀

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

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

    C語言中的typedef的應用

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

    verilog中function和task的區別

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

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

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

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

    文件夾中隨時創造TXT文件,如何及時選出剛創造的文件?或關鍵字搜索出需要的TXT文件?
    發表于 02-06 15:22
    曼哈顿百家乐的玩法技巧和规则| 博士百家乐官网现金网| 希尔顿百家乐官网娱乐城 | 澳盈88投注| 百家乐有免费玩| 墨竹工卡县| 网络百家乐必胜投注方法| 百家乐官网信誉好的平台| 大世界百家乐的玩法技巧和规则| 百家乐官网送錢平臺| 大发888娱乐游戏博彩| 博必发百家乐官网的玩法技巧和规则| 能赚钱的棋牌游戏| 澳门百家乐网址| 百家乐官网最佳公式| 黄金百家乐的玩法技巧和规则 | 百家乐投注外围哪里好| 百家乐官网白茫茫| 大发888博彩官方下载| 百家乐几点开奖| 百家乐官网视频挖坑| 喜来登百家乐的玩法技巧和规则 | 澳门百家乐必杀技| 百家乐官网有没有攻略| 百家乐几点不用补牌| 棋牌百家乐官网有稳赚的方法吗| 白金国际| 怎样玩百家乐的玩法技巧和规则| 英皇百家乐官网的玩法技巧和规则 | 娄烦县| 太阳城申博娱乐城| 累积式百家乐官网的玩法技巧和规则| 沙龙国际网站| 百家乐看澳门| 月华百家乐官网的玩法技巧和规则| 鼎龙国际娱乐城| 嘉禾百家乐的玩法技巧和规则 | 赌球| 利高百家乐娱乐城| 网上百家乐官网有人赢过吗| 京城娱乐城开户|