【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

相关文章
|
28天前
|
存储 索引 Python
|
30天前
|
Python
Python生成器、装饰器、异常
【10月更文挑战第15天】
|
19天前
|
存储 程序员 数据处理
深入理解Python中的生成器与迭代器###
本文将探讨Python中生成器与迭代器的核心概念,通过对比分析二者的异同,结合具体代码示例,揭示它们在提高程序效率、优化内存使用方面的独特优势。生成器作为迭代器的一种特殊形式,其惰性求值的特性使其在处理大数据流时表现尤为出色。掌握生成器与迭代器的灵活运用,对于提升Python编程技能及解决复杂问题具有重要意义。 ###
|
1月前
|
存储 大数据 数据处理
理解Python中的生成器:高效迭代的秘密
【10月更文挑战第8天】理解Python中的生成器:高效迭代的秘密
33 0
|
1月前
|
存储 大数据 程序员
深入理解Python中的生成器
【10月更文挑战第8天】深入理解Python中的生成器
13 0
|
4月前
|
Python
python生成器表达式
python生成器表达式
|
6月前
|
Python
如何在Python中使用生成器表达式?
如何在Python中使用生成器表达式?
50 5
|
6月前
|
Python
Python 教程之控制流(17)生成器表达式
Python 教程之控制流(17)生成器表达式
27 0
|
11月前
|
Python
Python 教程之控制流(17)生成器表达式
Python 教程之控制流(17)生成器表达式
46 0
下一篇
无影云桌面