2017-10-19 80 views

回答

3

這在PEP 492其中引入async/await的理由陳述和禁止使用的yield內它們:

電流Python支持經由發電機(PEP 342)中,由產率進一步提高執行協程從PEP 380 介紹語法這種方法有很多缺點:

  • 很容易混淆coroutin因爲它們的 共享相同的語法;新開發人員尤其如此。

  • 與否的功能是通過從在其主體的語句,當這樣的語句出現在或重構期間從 功能體消失這可導致 不明顯錯誤收率或產率的存在 確定的協程。

  • 對異步調用的支持是 限於允許語法上允許產出的表達式,限制 語法功能(如with和for語句)的用處。

這僅適用在Python 3.5

在Python 3.6,PEP 525走過來解除與異步發電機的禁令。現在在異步def函數內部使用yield會導致創建異步生成器。

+0

謝謝。在'async def'函數中使用'yield'是否導致協程?協程的定義是什麼? – Tim

+0

協程是一個函數,可以產生值並可以在調用者執行期間接受值。 –

相關問題