python生成器sned()方法介绍

本人也是一个菜鸟, 写这篇文章也是记录自己遇到的问题方便日后用到能够快速找到,如果能对读者有所帮助我万分荣幸。如果此简书与别的文章有所雷同,望大家多多包涵。如果存在问题或者有写错的地方,望大家积极指出错误。生活不易,祝各位读者都能活成自己想要的样子。

#!/usr/bin/python3

def test_generator():
    value = yield 1
    yield value

gen = test_generator()
print(gen.send(None))
print(gen.send("giao"))

以上案列输出:
1
giao

看到输出其实读者应该就知道send的用法了, 其实他和next差不多, 只是send可以携带一个参数作为第一次挂起yield语句的返回值,但是小伙伴们应该也注意到了第一个输出为什么是携带一个None; 那是因为启动生成器运行第一个yield, 没有上一次挂起的yield的语句返回值; 所以小伙伴们要注意一下send启动生成器,第一个send必须携带None这个关键字为参数; 不然会报错:TypeError: can't send non-None value to a just-started generator。

#!/usr/bin/python3

def test_generator():
    value = yield 1
    yield value

gen = test_generator()
print(gen.send(None))
print(gen.send("giao"))
print(gen.send("james"))

以上案例和第一个案例只多了一次sned调用:
会产生StopIteration报错, 那是因为生成器执行完成了,再次调用会抛出StopIteration异常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。