这篇文章主要介绍“python中send方法的实例”,在日常操作中,相信很多人在python中send方法的实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中send方法的实例”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
yield from从容器中取值,容器包含生成器,也就是说yield from让一个生成器将其部分操作委派给另外一个生成器。
def reverse(x): while x-1>=0: yield x-1 x -=1 def list_number(x): yield from range(x) yield from range(x-1, -1, -1) yield from reverse(x) for i in list_number(3): print(i,end=',') out: 0,1,2,2,1,0,2,1,0,
def count(): # 子生成器,将yield传来的数字累加,若传来的值为None,则返回累加结果 result = 0 while 1: x = yield if x is None: return result result += x def count_list(x): # 父生成器,将累加任务委托给子生成器 while 1: y = yield from count() x.append(y) plus_list = [] cal = count_list(plus_list) next(cal) # 使生成器可以接收传入值 for i in range(1, 5): cal.send(i) cal.send(None) # 实际收到None的是count函数,结束累加 for i in range(1, 11): cal.send(i) cal.send(None) # 结束第二次累加 print(plus_list) # 输出最终结果 out: [10, 55]
send方法要配合yield语句使用。
send方法可以给yield传值,但yield尚未产生断点时传值会报错,所以先要对生成器执行一次next,然后才能正常传值。
send和yield from配合可以在调用者和生成器之间形成透明的双向数据通道,包括从生成器获取数据以及向生成器传送数据。
要更加深入理解send和yield机制需要学习和理解协程相关的知识点。留待日后梳理协程知识点时再细讲send和yield from。
到此,关于“python中send方法的实例”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。