根据 the Python documentation yield 关键字可以采用“expression_list”,但它是可选的:
yield_expression ::= "yield" [expression_list]
我在 Python 文档和 What does the yield keyword do in Python 的任何答案中都找不到此类用法的示例。 ,也不是一般的网络阅读。
如果 yield
在没有 expression_list
的情况下使用,那么我猜得到的方法不能用作生成器,所以还有其他场景需要普通的 yield
可能有用吗?
最佳答案
虽然它们几乎总是被用作简单的生成器,yield
启用完全成熟的 coroutines .
除了用于从生成器/协程中发送值外,yield
还可以接收 值,起到协调不同协程执行的作用。因此,如果您只想协调或接收值,则不需要 expression_list
。
这是一个简单的例子:
def infini_printer():
while True:
received = yield # get the received value into a variable
print(received)
printer = infini_printer()
printer.next() # returns None, since we didn't specify any expression after yield
printer.send("foo") # prints "foo"
关于python - 简单的 yield 关键字在 Python 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880095/