不使用异步等待的Python代码
对于以下使用不使用异步等待的Python代码,python,async-await,yield,Python,Async Await,Yield,对于以下使用async关键字的协同程序 async def greeting_1(name): return 'Hello' + name 要运行此协同程序,请调用run(问候语1('John')) 使用yield语句的问候语的等效代码是什么?不使用异步关键字使用生成器功能的等效协同程序: >>> def greeting_1(name): ... if 0: ... yield ... return 'Hello' + name .
async
关键字的协同程序
async def greeting_1(name):
return 'Hello' + name
要运行此协同程序,请调用run(问候语1('John'))
使用
yield
语句的问候语的等效代码是什么?不使用异步
关键字使用生成器功能的等效协同程序:
>>> def greeting_1(name):
... if 0:
... yield
... return 'Hello' + name
...
>>> run(greeting_1('John'))
'HelloJohn'
“等价物”是什么意思?是否只需要返回'Hello'+name
的常规函数?这很容易写。是否要创建不带async
或yield
的异步协同路由?这将和在没有def
或lambda
的情况下创建函数一样荒谬和不切实际@user2357112你能删除你评论中的前两行吗?@user2357112我想他们想用生成器函数(收益率语句)做一个等价的协同路由@wim:重读它,它说“使用yield
”,我以为上面写着“不使用yield
”。为什么打招呼
仍然返回生成器对象?尽管yield
语句在您的代码中是不可访问的。Python如何知道yield是否可访问?如果0:
我们将替换为if random.choice([0,1]):
?必须在函数定义时确定它是否是生成器。如果对于每个异步定义,都有一个yield
版本,那么我们为什么要使用异步版本?语法糖..较新的async
/wait
语法比用ge实现同样的东西更具表现力,更易于阅读用户很难理解在哪里使用和不使用wait关键字
>>> def greeting_1(name):
... if 0:
... yield
... return 'Hello' + name
...
>>> run(greeting_1('John'))
'HelloJohn'