不使用异步等待的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'