【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器

简介: 【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器

一、可迭代对象和迭代器的转换


1、代码演示


可迭代对象:iterable        

 

迭代器对象:iterator

2cd0be91c696421487c852f6874c1c6c.png

2、小结

  • 可迭代对象可以通过__iter__()方法变成迭代器对象
  • 如果一个对象拥有iter()方法,是可迭代对象;如果一个对象拥有next()方法,是迭代器对象
  • 定义可迭代对象,必须实现iter()方法;定义迭代器,必须实现iter方法和next方法




二、自定义迭代器类


自定义迭代器类的条件


  • 有iter方法,返回迭代器对象本身


  • 有next方法,返回容器下一个元素或可抛出StopIteration异常


  • 举例一


82e2c4130cc442d09372487d04501c1f.png

以上代码可改写为:

74b2d089004b4073abc93cbbfb6f61dd.png


  • 举例二

5166fed41dd04615867dfd694f0dba65.png


  • 举例三

3d4c613c6aa84c00bda5b02d06e3e4de.png



三、异常类


自定义异常类,需要继承Exception类。只要是定义的类继承自Exception,这个类就是一个异常类。


举例一:


e16886965dfe4a7c88096698762fdfc4.png

举例二:

70028093b9cb48d8a252ca10993145ef.png



四、生成器


生成器:python提供的一种非常见简便的语法能让我们来自己写出迭代器


只要再def中有yield关键字的就称为生成器




1、生成器就是一个迭代器


定义方式:类似于列表推导式,把列表推导式的[]改为()


7a30cc7a6c774ca88a795ddf1a954138.png


2、生成器函数


生成器函数:python中,使用了yield的函数成为生成器(generator)

  • 普通函数:返回值用return,生成器函数使用yield语句


  • yield语句一次返回一个结果,在每个结果中间,挂起函数,以使下一次从它离开的地方继续执行


  • yield效果使函数中断。并保存中断状态


7f61615dbe55410994419d589a58670e.png


以上代码可改写为:


697ac77117a44192a92bb9d0e96c0726.png



  • 举例:处理文件

处理文件:用户指定要查找的文件和内容,将文件中要查的内容的每一行都打印出来。



步骤


  1. 写一个函数,参数是文件和内容


  1. 文件操作——open()函数


  1. 查找内容


  1. 找到后输出




具体实现


  • 在F盘中创建一个记事本文件并写上内容



4dfb924fbfbd4f588fe434de279dec26.png


代码实现


cef2342fa325496cafbc1bdea10720e7.png

相关文章
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
199 1
|
3月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
254 2
|
3月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
141 4
|
4月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
457 3
|
4月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
226 0
|
3月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
169 0
|
4月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
146 0
|
7月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
177 27
|
8月前
|
Python
如何处理python的常见异常问题
在Python语言中,python异常处理机制主要依赖try、except、else、finally和raise五个关键字。本篇文章将为大家详细讲解一下如何处理python的常见异常问题。
|
8月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
278 5

推荐镜像

更多