Python yield send 获得生成器后,需要先启动一次
【摘要】 环境信息ModelArtsNotebookmindspore1.2.0-openmpi2.1.1-ubuntu18.04 代码示例def yield_test(): # next() 遇到yield会停止,保存数据并返回后面的数值 # send_value默认为None a = 1 send_value = yield a + 1 print(send_va...
环境信息
- ModelArts
- Notebook
- mindspore1.2.0-openmpi2.1.1-ubuntu18.04
- Notebook
代码示例
def yield_test():
# next() 遇到yield会停止,保存数据并返回后面的数值
# send_value默认为None
a = 1
send_value = yield a + 1
print(send_value)
send_value = yield a + 1
print(send_value)
# 获得生成器
generator = yield_test()
# 启动 - 第一种方式
print(id(generator), generator.__next__())
# 想理解好 send 的功能,建议使用 pycharm - Debug - Step Into(F7)。一步一步地跟下来
print(generator.send("hello"))
140522373701328 2
hello
2
# 获得生成器
generator = yield_test()
# 启动 - 第二种方式
print(id(generator), generator.send(None))
print(generator.send("world"))
140522373701456 2
world
2
知识扩展
错误代码示例
def yield_test():
a = 1
send_value = yield a + 1
print(send_value)
# 获得生成器
generator = yield_test()
# 直接用send("hello world")
generator.send("hello world")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-4c9cc4be2e9e> in <module>
2 generator = yield_test()
3 # 直接用send("hello world")
----> 4 generator.send("hello world")
TypeError: can't send non-None value to a just-started generator
参考博文
备注
- 欢迎各位同学一起来交流学习心得^_^
- 在线课程、沙箱实验、认证、大赛、论坛和直播,其中包含了许多优质的内容,推荐了解与学习。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)