基本信息
文件名称:《Python程序设计》课件6-模块与包.pptx
文件大小:181.42 KB
总页数:22 页
更新时间:2025-06-24
总字数:约6.55千字
文档摘要

~1~第六章模块与包

目录模块包编程实践本章习题-2-

模块与包随着软件任务变得日益复杂,编写的程序代码量也急剧增加,因此有效地管理这些代码变得尤为重要在许多情况下,代码的开发是一个团队协作的过程,这就要求必须考虑团队成员之间的协同性借鉴软件工程中的“分而治之”原则,一个大的软件项目可以被划分成多个小的单元,这些单元即为模块,而相关联且功能紧密的多个模块根据它们的物理或逻辑关系被组织在一起,形成了包这样的代码组织方式不仅有利于功能划分,也促进了代码复用和便于维护3

模块的基本概念函数与模块函数的重用:函数提供精细的代码重用机制,其方法是:通过导入函数定义。模块的重用:模块包含多个函数或变量,整体导入,提高效率,简化重用(如绘图函数集)。示例:一次性导入绘图模块,使用所有相关功能。模块的价值代码组织模块作为功能容器:封装函数、类和变量划分:逻辑上独立的部分,专注特定任务可维护性与模块化提升代码可读性和重用性减少名称冲突,简化团队协作实际应用示例数据分析:将函数集合保存在单一模块,跨项目重用4

Python模块在Python中,一个模块实际上就是一个拥有.py后缀的文件。这意味着每个Python文件本身都可以被视为一个模块,可以被其他Python代码导入和使用假设有一个名为math_operations.py的模块,它定义了一些基本的数学运算:#math_operations.pydefadd(x,y):returnx+ydefsubtract(x,y):returnx-ydefmultiply(x,y):returnx*ydefdivide(x,y):returnx/y在另一个文件中,可以导入这个模块,并使用其中定义的函数:#main.pyimportmath_operationssum_result=math_operations.add(10,5)product_result=math_operations.multiply(10,5))5

程序结构通常由多个互相协作的文件构成包括一个主要的入口文件以及多个模块文件主入口文件负责定义整个程序的主要流程,它通过调用其他模块文件中的函数来执行各种特定的任务这些模块文件又可能相互调用,形成一个功能丰富的网络模块文件还可以利用Python的内置标准库来扩展其功能6

模块循环引用问题在Python中,两个模块相互引用是可能的,但这种情况需要小心处理,否则容易引起循环引用问题,特别是在模块级别的代码执行时循环引用主要发生在两个或更多的模块互相导入对方,这可能导致导入失败或者运行时错误,因为Python解释器在处理导入语句时可能遇到尚未完全初始化的模块如何解决或避免循环引用1.重新设计代码结构:通常,循环引用表明可能需要重新考虑模块的设计。尽量避免模块间的直接依赖,或者将相互依赖的部分提取到一个单独的模块中2.使用局部导入:将导入语句放在函数内部或者需要它的地方,而不是文件的顶部。这样,只有在实际需要模块功能的时候才进行导入,可以避免初始化阶段的循环依赖问题3.延迟导入:对于类定义中可能出现的循环引用,可以在类的方法内部进行导入,从而延迟导入的时机7

示例假设有两个模块,moduleA和moduleB,并且它们需要相互引用8#moduleA.pyfrommoduleBimportBclassA:deffoo(self):print(Afoo)b=B()b.bar()#moduleB.pyfrommoduleAimportAclassB:defbar(self):print(Bbar)a=A()a.foo()#moduleA.pyclassA:deffoo(self):frommoduleBimportBprint(Afoo)b=B()b.bar()#moduleB.pyclassB:defbar(self):frommoduleAimportAprint(Bbar)a=A()a.foo()

模块的导入与使用Python有两种主要的模块导入方法:导入整个模块和从模块中导入特定对象1.导入整个模块:使用import关键字导入一个完整的模块,使得当前文件可访问模块中定义的所有函数和类语法结构import模块名[as别名]#导入模块并起一个别名