使用Python将数据发送到生成器

用户名

我的目标是了解将数据发送到Python生成器的概念。以下是我的代码段和意外的输出:

def spam():
    while True:
        received = yield
        print("Message received from generator function:", received)
        yield received


if __name__ == "__main__":
    s = spam()
    print(s)
    next(s)
    names = ["Bob", "Nancy", "Daniela", "Martin"]
    for name in names:
        print(s.send(name))

输出:

7tvmb228:Own subhayan.bhattachary$ python test_generators.py 
<generator object spam at 0x10873aa20>
Message received from generator function: Bob
Bob
None
Message received from generator function: Daniela
Daniela
None

有人可以指出我的价值来自何处,以及如何解决这个问题。我的假设是值不会传递给函数。但是为什么会这样呢。我要去哪里错了。

感谢您提前提出任何答案。

沃瓦诺

文档指出:

通过调用其send(value)方法将值发送到生成器此方法恢复生成器的代码,并且yield表达式返回指定的值。如果__next__()调用常规方法,则yield返回None

next(s)每次发送后都添加一个额外的“冲洗”None结果。

def spam():
    while True:
        received = yield
        print("Message received from generator function:", received)
        yield received


if __name__ == "__main__":
    s = spam()
    print(s)
    next(s)
    names = ["Bob", "Nancy", "Daniela", "Martin"]
    for name in names:
        print(s.send(name))
        next(s)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章