当前位置: 首页 > news >正文

深入Python核心:模块管理、异常处理与迭代生成器全解析

目录

  • 前言
  • 一、from import
  • 二、python中的包
  • 三、异常处理机制
  • 四、python中常用标准库 
  • 五、迭代器与生成器 
  • 5.1创建一个迭代器
  • 5.2 生成器
  • 总结

前言

书接上文

Python匿名函数与面向对象编程核心解析:从lambda到继承多态全掌握-CSDN博客文章浏览阅读785次,点赞26次,收藏6次。本文全面解析Python匿名函数lambda的语法与使用场景,并深入剖析面向对象编程的核心概念,包括类与对象的定义、属性操作、继承与多态的实现,以及模块化开发技巧,帮助开发者掌握从基础语法到高级特性的完整知识体系,提升代码设计能力与工程化思维。 https://blog.csdn.net/qq_58364361/article/details/146144610?fromshare=blogdetail&sharetype=blogdetail&sharerId=146144610&sharerefer=PC&sharesource=qq_58364361&sharefrom=from_link


一、from import

直接导入某个模块某个功能

先看文件1

def fun_name(name):
    print(f"{name}今天要考试了")


def fun_pt():
    print("中午吃什么?")

再看文件2

from day001 import fun_name  #引入一个单独的函数

fun_name("小白")


二、python中的包

当有多个模块不加区分直接放一起很不合理可以模块组织一起创建

也是由模块组成所以导入模块导入一样

这里引入包中的文件采取

from 包文件夹名.包字文件夹名..文件名 impor 要调用的函数名


三、异常处理机制

l1 = [2, 3, 6]
try:
    print(l1[8])
except IndexError:
    print("error")
else:
    print("ok")
finally:
    print("处理结束")
print("aaa")

l1 = [2, 3, 6]
try:
    print(l1[8])
except Exception as e:
    print("error")
    print(e)  #报错原因
else:
    print("ok")
finally:
    print("处理结束")
print("aaa")


四、python中常用标准库 

名称

描述

os

os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。

sys

sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。

time

time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。

datetime

datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。

math

math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。

json

json 模块提供了 JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。

numpy

一个用于维度数组计算的库

opencv

一个用于计算机视觉的库

matplotlib

一个用于数据可视化的库(绘图)

scikit-learn

一个用于机器学习的库

tensorflow

一个用于深度学习的库

threading

一个用于设置多线程的库


五、迭代器与生成器 

迭代是Python访问集合中元素的一种方式,迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

通过索引的方式进行迭代取值,实现简单,但只适用于序列类型:字符串、列表、元组

对于没有索引的字典、集合等非序列类型,需要使用不依赖索引来进行迭代取值的方法,使用迭代器

字符串、列表、元组、字典、集合、打开的文件都是可迭代对象

迭代器有两个基本的方法:iter() 和 next()。

l1 = [2, 5, 8, 3, 6]
it = iter(l1)  # 创建迭代器对象
print(next(it))  # 输出迭代器下一个元素
print(next(it))

或使用for循环遍历

l1 = [2, 5, 8, 3, 6]
it = iter(l1)  # 创建迭代器对象
for i in it:
    print(i)


5.1创建一个迭代器

把一个类作为一个迭代器使用,需要再类里实现两个方法iter()和next()

iter() 方法返回一个特殊的迭代器对象,这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。

next() 方法会返回下一个迭代器对象

创建一个返回数字的迭代器,起始值是10,每次递增10

class MyNum:
    def __iter__(self):
        self.a = 10
        return self

    def __next__(self):
        x = self.a
        self.a += 10
        return x


my_class = MyNum()
my_iter = iter(my_class)

print(next(my_iter))
print(next(my_iter))
print(next(my_iter))

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在__next__()方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代

class MyNum:
    def __iter__(self):
        self.a = 10
        return self

    def __next__(self):
        if self.a <= 50:       
            x = self.a
            self.a += 10
            return x
        else:
            print('迭代结束')
            raise StopIteration


my_class = MyNum()
my_iter = iter(my_class)

print(next(my_iter))
print(next(my_iter))
print(next(my_iter))


5.2 生成器

 在 Python 中,使用了 yield 的函数被称为生成器(generator)。

yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

每次使用 yield 语句生产一个值后,函数都将暂停执行,等待被重新唤醒。

yield 语句相比于 return 语句,差别就在于 yield 语句返回的是可迭代对象,而 return 返回的为不可迭代对象。

然后,每次调用生成器的 next() 方法或使用 for 循环进行迭代时,函数会从上次暂停的地方继续执行,直到再次遇到 yield 语句

def Fun(n):
    while n > 0:
        yield n
        n -= 1


# 创建生成器对象
g1 = Fun(5)

# 通过迭代生成器获取值
print('next方法:', next(g1))
print('next方法:', next(g1))

# 使用 for 循环迭代生成器
for i in g1:
    print('for循环:', i)

# 运行结果:
# next方法: 5
# next方法: 4
# for循环: 3
# for循环: 2
# for循环: 1

在这个代码中,Fun 函数是一个生成器函数。它使用 yield 语句逐步产生从 n 到 1 的倒序数字。在每次调用 yield 语句时,函数会返回当前的倒序数字,并在下一次调用时从上次暂停的地方继续执行。

创建生成器对象并使用 next() 函数或 for 循环迭代生成器,我们可以逐步获取生成器函数产生的值。在这个例子中,我们首先使用 next() 函数获取前两个倒序数字,然后通过 for 循环获取剩下的三个倒序数字。

生成器函数的优势是它们可以按需生成值,避免一次性生成大量数据并占用大量内存。此外,生成器还可以与其他迭代工具(如for循环)无缝配合使用,提供简洁和高效的迭代方式


总结

        本文系统解析Python编程中的核心概念与实用技巧,涵盖模块导入、包管理、异常处理、标准库应用及迭代器与生成器的深入剖析。首先通过实例演示from...import语法实现模块函数的精准导入,强调模块化编程的优势;在包管理部分,阐述如何通过目录结构组织多模块以提升代码可维护性。异常处理机制详细讲解try-except-else-finally的层级结构,对比IndexError与通用Exception捕获的适用场景,并展示异常信息的提取方法。常用标准库部分列举os、sys、datetime等核心库的功能,扩展至numpy、OpenCV等第三方库在数据与AI领域的应用。迭代器部分从基础iter()next()操作切入,结合自定义迭代器类的实现(如__iter____next__方法的重写),阐明迭代终止的StopIteration异常控制逻辑;生成器则通过yield关键字解析惰性计算的实现原理,对比生成器函数与普通函数的差异,并以递减数列生成示例揭示生成器在内存效率上的优势。全文贯穿代码实例,帮助开发者掌握高效、健壮的Python编程范式。

相关文章:

  • Dify知识库 本地部署DeepSeek 开启智能体和工作流
  • 【操作系统】Linux基本命令2
  • 永磁同步电机无速度算法--基于复系数滤波的滑模观测器
  • Spring 中事务的实现
  • MySQL索引详解
  • 从零到一:如何系统化封装并发布 React 组件库到 npm
  • Vue 框架使用难点与易错点剖析:避开陷阱,提升开发效率
  • wow-rag学习|手搓RAG
  • Spring Boot
  • C语言 第四章 数组(2)
  • VMware 17 3389远程接入会出现无响应
  • 系统设计面试总结:5、加密算法的应用场景、哈希算法(MD、SHA、BCrypt)、对称加密(DES和3DES、AES)、非对称加密(RSA、DSA)
  • python系列之运算符
  • 重要!!! 改进 梯度方差(Fisher 信息近似) 指数移动平均
  • MATLAB代码开发实战:从入门到高效应用
  • 使用AI一步一步实现若依前端(10)
  • Java基础语法精讲:类型转换、常用运算符与用户输入处理引言
  • 苍穹外卖实战附源码-DAY1
  • 掌握C++内联与异常:构建高效且健壮的应用程序
  • 蓝桥杯备考:数据结构堆之序列合并
  • 媒体:酒店、民宿临时毁约涨价,怎么管?
  • 启程回家!神十九轨道舱与返回舱成功分离
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 今年我国电影票房破250亿领跑全球,“电影+”带动文旅消费热潮
  • 五一期间上海景观照明开启重大活动模式,外滩不展演光影秀
  • 央媒关注给保洁人员设休息室:让每一份踏实奋斗得到尊重呵护