python - 简单的 yield 关键字在 Python 中有什么作用?

标签 python yield

根据 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/

相关文章:

javascript - 在 Meteor JS 中单击特定菜单时如何呈现部分模板

python - XOR Python 文本加密/解密

python - 获取 "socket.error: [Errno 61] Connection refused"python paramiko

python - 在 Python 中将小写字符更改为大写,反之亦然

python - 在 numpy 2-dim 数组中堆叠列以获得 1-dim 数组

Python:产量和产量分配

python - 相当于 Python 生成器的 `return`

python - 删除差异但保持 python 列表中的顺序和重复项

ruby-on-rails - yield to an anonymous block 两个函数

Javascript 检查产量支持