如何解决使用python生成器理解发送方法
我正在尝试理解 Python 中的协程,我在几篇文章和 youtube 视频中看到的一种方法是将 yield 设置为变量,然后使用名为 .send() 的方法。但对我来说,发生的事情并不完全直观。
我编写了一个小函数来深入了解正在发生的事情:
def foo():
for i in range(10):
x = yield i
print(f'the value of x is : {x}')
g = foo()
print(next(g))
g.send(10)
print(next(g))
g.send(100)
这个测试的输出是:
0
the value of x is : 10
the value of x is : None
2
the value of x is : 100
我从输出中看到的是,生成器按照我的预期运行并产生第一个值 0,但此时 x=0 设置不正确,当我将 10 的值发送为我理解 .send() 方法将值发送到刚刚产生的生成器?但是让我失望的是,在下一步中 i=1 没有产生,并且当 i=2 时发送 g.send(100) 但为什么会发生这种情况?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。