协程是什么?可能很多人不清楚,所以我们先从其中的yield from开始讲解。
yield from 用法详解:
yield from 是在Python3.3才出现的语法。所以这个特性在Python2中是没有的。
yield from 后面需要加的是可迭代对象,它可以是普通的可迭代对象,也可以是迭代器,甚至是生成器。
简单应用:拼接可迭代对象
我们可以用一个使用yield和一个使用yield from的例子来对比看下。
使用yield
<p style=\"line-height: 1.75em;\"><span style=\"font-family: 微软雅黑, \"Microsoft YaHei\"; font-size: 14px;\"># 字符串<br>astr=\'ABC\'<br># 列表<br>alist=[1,2,3]<br># 字典<br>adict={\"name\":\"wangbm\",\"age\":18}<br># 生成器<br>agen=(i for i in range(4,8))<br><br>def gen(*args, **kw):<br> for item in args:<br> for i in item:<br> yield i<br><br>new_list=gen(astr, alist, adict, agen)<br>print(list(new_list))<br># [\'A\', \'B\', \'C\', 1, 2, 3, \'name\', \'age\', 4, 5, 6, 7]<br></span></p>
使用yield from
<p style=\"line-height: 1.75em;\"><span style=\"font-family: 微软雅黑, \"Microsoft YaHei\"; font-size: 14px;\"># 字符串<br>astr=\'ABC\'<br># 列表<br>alist=[1,2,3]<br># 字典<br>adict={\"name\":\"wangbm\",\"age\":18}<br># 生成器<br>agen=(i for i in range(4,8))<br><br>def gen(*args, **kw):<br> for item in args:<br> yield from item<br><br>new_list=gen(astr, alist, adict, agen)<br>print(list(new_list))<br># [\'A\', \'B\', \'C\', 1, 2, 3, \'name\', \'age\', 4, 5, 6, 7]<br></span></p>
© 版权声明
THE END
暂无评论内容