生成器
2019-02-17 01:54:23来源:博客园 阅读 ()
两种创建生成器的方法:
将列表推导式的 [ ] 换成 ( )
在函数里使用 yield
三种启动生成器的方法:
next()
send(参数)
for循环
迭代器和生成器的区别:
迭代器可以减少资源耗用,实现循环
生成器是特殊的迭代器,可以通过yield暂停执行,也可以通过send启动方式传参改变执行方式
创建生成器对象和实例化一样,互不影响
实例
def fibo(all_num): """存在yield的函数,会变为生成器的模板""" a, b = 0, 1 current_num = 0 while current_num < all_num: ret = yield a # yield暂停,返回a的值,并且下次遍历时从yield下一个语句开始,即赋值给ret print("ret:", ret) a, b = b, a+b current_num += 1 # 创建生成器对象 obj = fibo(10) # obj2是新开辟的内存空间,与ojb互不影响 obj2 = fibo(10) # 启动生成器方法1 ret = next(obj) print("obj:", ret) # 启动生成器方法2,可传参,但第一次启动就使用send,参数必须是None ret = obj.send("熊") # send(参数)中的参数等价于生成器里的yidel a的结果 print("obj:", ret) # 启动生成器方法3 for i in obj: print(i)
原文链接:https://www.cnblogs.com/Selling-fish-bears/p/10387698.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:向后台提交数据:cookie,secure_cookie,
下一篇:协程
- Python学习日记(十) 生成器和迭代器 2019-08-13
- 链接 Mysql 创建 数据库和创表,增加数据 2019-08-13
- Python数据基础类型-列表 2019-08-13
- Python3字典排序 2019-07-24
- django框架使用及创建项目 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash