在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Python开发生成器和迭代器的区别?迭代器是一个更抽象的概念,任何对象;迭代器对象,它在容器中逐个访问容器内元素,next()也是 python 的内置函数。
迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和iter 方法返回自己本身,对于 string、list、dict、tuple 等这类容器对象,使用for循环遍历是很方便的。在后台 for 语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数 。在没有后续元素时 ,next()会抛出一StopIteration异常。
生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用 yield 语句。
每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)区别:生成器能做到迭代器能做的所有事,而且因为自动创建了iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出 StopIteration 异常。
术语的解释:
1、迭代器协议:对象需要提供next()方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代。
2、可迭代对象:实现了迭代器协议对象。list、tuple、dict都是Iterable(可迭代对象),但不是Iterator(迭代器对象)。但可以使用内建函数iter() ,把这些都变成Iterable可迭代器对象。
3、for item in Iterable 循环的本质就是先通过iter()函数获取可迭代对象Iterable的迭代器,然后对获取到的迭代器不断调用next()方法来获取下一个值并将其赋值给item,当遇到StopIteration的异常后循环结束
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
django中间件的使用方法博学谷讲师总结
django中间件的使用方法,Django在中间件中预置了六个方法;初始化、处理请求前、处理视图前、处理模板响应前、处理响应后、异常处理。
6598
2019-07-02 17:31:17
Redis和MongoDB优缺点对比
MongoDB和Redis都是NoSQL采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。
6229
2019-07-16 17:51:21
Flask框架和Django框架的区别是什么?
Flask框架和Django框架的区别:Flask框架自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库;Django太重了,除了web框架,自带ORM和模板引擎,灵活和Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉;
7045
2019-07-16 19:04:16
网络协议http和https区别?网站为什么要进行HTTPS改造?
网络协议http和https区别?网站为什么要进行HTTPS改造?HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准;HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版即HTTP下加入SSL层。HTTPS是基于tls和ssl加密的HTTP协议,网络传输是加密的,因此它的安全是显而易见的,包括防窃听、篡改、劫持。
5757
2019-07-26 14:28:19
2021年Python程序员薪资待遇如何?
目前Python开发工程师的平均薪资逼近20k,各大企业很重视会Python人才。随着AI时代和大数据的到来,Python语言应用越来越广泛。
3089
2021-01-11 13:55:57