篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了python生成器中yield和send分析相关的知识,希望对你有一定的参考价值。
生成器
在python中生成器是指用代码实现迭代器的的功能本质还是迭代器,只不过是代码实现迭代器功能。在python中生成器是由函数实现的,通常我们在函数中加入yeild就可以实现生成器。
生成器中yield
#定义一个函数def func(): print(111) yield 3 print(222)g=func()
运行上面代码你会发现函数根本没有执行,因为此时g是一个生成器对象,生成器是不会自己运行的,需要你调用next方法才会运行,并且每次遇到yield就会停止,继续调用next方法才会继续运行直到下一个yield。
def func(): print(111) yield 3 print(222)g=func()print(g.__next__())
运行结果:
可以看打印了111,222并没有打印,说明函数运行到yield就停止了,3是yield的返回值。
总结:
yield的作用主要有两个:1、暂定当前函数的运行。2、可以返回值给调用者
send的用法
send的用法类似于next()方法都可以使函数继续运行,并且可以传送值给上一个yield
def func1(): # print(1) count = yield 6 print(count) # print(2) count1 = yield 7 print(count1) # print(3) yield 8# g = func1()# next(g)# # g.send(\'alex\')# g.send(\'alex\')# g.send(\'太白\')# g.send(\'太白\')
总结:
send 与next一样,也是对生成器取值(执行一个yield)的方法。send 可以给上一个yield 传值。第一次取值永远都是next。最后一个yield 永远也得不到send传的值。
【文章转自 武汉网站建设公司 http://www.1234xp.com/wuhan.html 网络转载请说明出处】