我的目标是了解向 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
有人可以指出 None 值来自哪里以及如何解决这个问题。我的假设是,值不会传递给函数。但为什么会这样呢。我哪里出错了。
感谢您的提前答复。
最佳答案
None
值来自 received = Yield
,这本质上意味着您正在生成 None
值。您的 spam()
函数中只需要有一个 yield
:
def spam():
received = None
while True:
received = yield received
print("Message received from generator function:", received)
if __name__ == "__main__":
s = spam()
print(s)
next(s)
names = ["Bob", "Nancy", "Daniela", "Martin"]
for name in names:
print(s.send(name))
打印:
<generator object spam at 0x7f1518c8f9e8>
Message received from generator function: Bob
Bob
Message received from generator function: Nancy
Nancy
Message received from generator function: Daniela
Daniela
Message received from generator function: Martin
Martin
关于python - 在 Python 中将数据发送到生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515033/