【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

相关文章
|
26天前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
30 2
|
1月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
50 3
|
2月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
2月前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
67 5
|
2月前
|
Python
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
62 5
|
2月前
|
存储 开发者 Python
自定义Python的异常
自定义Python的异常
27 5
|
Python
汉语拼音转换工具(Python 版)
汉语拼音转换工具(Python 版) http://pypinyin.readthedocs.org/en/latest/
1744 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
26天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
107 80