python程序设计及上机实验教程第9章模块_第1页
python程序设计及上机实验教程第9章模块_第2页
python程序设计及上机实验教程第9章模块_第3页
python程序设计及上机实验教程第9章模块_第4页
python程序设计及上机实验教程第9章模块_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计及上机实验主讲:杨薇

Python模块第9章9.1模块化程序设计的概念9.2模块的设计和实现9.3模块的导入和使用9.4包9.5课后习题Python程序结构模块的创建及使用Python常用模块及内置模块本章重点模块的创建及内置模块的使用本章难点如果程序中包含了多个可以复用的函数或类,则通常把相关的函数和类分组包含在单独的模块(module)中。这些提供计算功能的模块称为模块(或函数模块),导入并使用这些模块的程序则称为客户端程序。模块化程序设计的概念9.1把计算任务分解成不同模块的程序设计方法称为模块化编程(modularprogramming)。使用模块可以将计算任务分解为大小合理的子任务,并实现代码的重用功能。9.1.1模块化程序设计在客户端使用模块提供的函数时,无须了解其实现细节。模块和客户端之间遵循的契约称为API(ApplicationProgrammingInterface,应用程序编程接口)。API用于描述模块中提供的函数的功能和调用方法。模块化程序设计的基本原则是先设计API,即模块提供的函数或类的功能描述,然后实现API,即编写程序,实现模块函数或类,最后在客户端中导入并使用这些函数或类。通过内置函数help()可以查看Python模块的API,其语法格式为:import模块help(模块)在查看API之前,需要使用import语句导入模块,也可以使用Python在线帮助查看模块的API。模块化程序设计的概念9.19.1.2模块的API模块化程序设计是现代程序设计的基本理念之一,具有如下优越性。(1)可以编写大规模的系统程序,通过把复杂的任务分解为子任务可以实现团队合作开发,完成大规模的系统程序。(2)控制程序的复杂度,分解后的子任务的实现模块代码规模一般控制在数百行之内,从而可以控制程序的复杂度,各代码调试可以限制在少量的代码范围。(3)实现代码重用,一旦实现了通用模块(如math、random等),任何客户端都可以通过导入模块直接重用代码,而无须重复实现。(4)增强可维护性,模块化程序设计可以增强程序的可维护性,通过改进一个模块的实现可以使得该模块的客户端同时被改进。模块化程序设计的概念9.19.1.3模块化程序设计的优越性模块设计的指导性原则一般包括如下几点。(1)先设计API,再实现模块。(2)控制模块的规模,只为客户端提供需要的函数。实现包含大量函数的模块会导致模块的复杂性。(3)在模块中编写测试代码,并消除全局代码。(4)使用私有函数实现不被外部客户端调用的模块函数。(5)通过文档提供模块帮助信息。模块的设计和实现9.29.2.1模块设计的一般原则API定义客户端和实现之间的契约。API是一个明确的规范,规定“实现”的具体功能是什么。API通常由两部分组成,即可用函数的签名的精确规范,以及描述函数作用的非正式自然语言描述。API一般使用表格的形式描述模块中的变量、函数和类。在编写一个新模块时,建议先设计API,然后实现模块。模块的设计和实现9.29.2.2API设计Python模块对应于包含Python代码的源文件(其扩展名为.py),在文件中可以定义变量、函数和类。在模块中除了可以定义变量、函数和类外,还可以包含一般的语句,称之为主块(全局语句)。当运行该模块或者导入该模块时,主块语句将依次执行。一般而言,独立运行的源代码中主要包含主块,以实现相应的功能。作为库的模块,主要包含可供调用的变量、函数和类,还可以包含用于测试的主块代码。值得注意的是,主块代码语句只在模块第一次被导入时执行,重复导入时不会多次导入多次执行。模块的设计和实现9.29.2.3模块的创建Python中包含了数量众多的模块,通过import语句和reload()函数,可以导入模块,并使用其定义的功能。模块的导入和使用9.31.导入模块和使用模块使用import语句可以导入模块,其基本形式如下:import模块名import模块名1,模块名2,...,模块名nimport模块名as模块别名其中,模块名是要导入的模块的名称,模块名区分大小写。一般在Python源程序的开始位置导入其他模块,在导入模块后,可以使用全限定名称访问模块中定义的成员,即:模块名.函数名/变量名例9-1模块导入实例。模块的导入和使用9.3importmathx=-1y=abs(x)print(y)print(math.fabs(x))11.0运行结果为:2.导入模块中的成员Python使用from...import语句直接导入模块中的成员,其基本形式如下:from模块名import成员名from模块名import成员名1,成员名2,成员名3,...,成员名n#导入模块中的多个成员from模块名import*#同时导入一个模块中的所有成员模块的导入和使用9.3例9-2定义一个模块名为“mytest.py”,“mytest.py”中定义一个函数

print_mydef,接下来新建一个Python文件test.py,调用mytest.py。模块的导入和使用9.3#-*-coding:UTF-8-*-defprint_mydef(str):print(str)return#-*-coding:UTF-8-*-frommytestimportprint_mydefmytest.print_mydef("我在这里哦!")mytest.py源代码如下:test.py源代码如下:上述代码运行的结果为:“我在这里哦!”

模块的导入和使用9.3import和from...import的区别如下:

import和from...import都是导入模块的方法,使用“import”关键词是将整个模块引入,前面提到的系统内置模块导入、自定义模块及第三方开源模块导入都是使用的import;使用from...import则是引入指定的部分到当前的命名空间中来。包9.4Python程序由包(Package)、模块(Module)、函数和类组成。包9.4在大型项目中往往需要创建许多模块,这些功能相似的模块可以使用包组成层次组织结构,以便于维护和使用,即包是一系列的模块组成的集合。Python模块是.py文件,而包是文件夹。为了组织好模块,我们将多个模块放到包里面进行管理,包是一个分层次的目录结构,简单地说,包就是一个文件夹,包下面还可以有子包,但是包里至少包含一个__init__.py文件(该文件可以为空)。__init__.py文件是为了标识该文件夹是包,结构如下:

package_test├──__init__.py├──module1.py└──module2.py9.4.1包的概念包9.4包和模块组成的层次组织结构对应于文件夹和模块文件。创建包首先需要在指定目录中创建对应包名的目录,然后在该目录下创建一个特殊文件__init__.py,最后在该目录下创建模块文件。9.4.2创建包包9.4Python中除了用户创建的包之外还自带了许多工具包,如图形用户接口、字符串处理、图形图像处理、Web应用等。这些包在Python的安装目录下的lib子目录中。包的导入可以使用import、from...import语句。9.4.3包的导入和使用包9.41.使用import导入包在使用import语句导入包中的模块时需要指定对应的包名,其基本形式如下:import[包名1.[包名2.…]].模块名#导入包中模块其中包名是模块的上层组织包的名称,包名和模块名区分大小写。在导入包中的模块后,可以使用全限定名称访问包中模块定义的成员:[包名1.[包名2.…]].模块名.函数名#使用全限定名称调用模块中的成员包9.42.使用from...import导入包用户也可以使用from…import语句直接导入包中模块的成员,其基本形式如下:from[包名1.[包名2.…]].模块名import成员名#导入模块中的具体成员通过该方法导入模块后我们不再需要使用全限定名称访问,而是直接使用模块,格式为:模块名.函数名包9.4例9-3包的创建、引用示例。为了更好地理解Python中包、模块、函数的关系,具体来看下面的实例:创建项目-包-模块-函数。步骤01:新建Python项目:pythoncode。

步骤02:在项目pythoncode下新建package_test包。步骤03:在包package_test下新建module1.py、module2.py两个Pythonfile。

包9.4module1.py源代码如下:#-*-coding:UTF-8-*-defmodule1():print("I'minrunmodule1")module2.py源代码如下:#-*-coding:UTF-8-*-defmodule2():print("I'minrunmodule2")包9.4步骤

04:为使模块导入更简单,在文件目录中添加

__init__.py文件,当用

import导入包时,会执行

__init__.py里面的代码。#-*-coding:UTF-8-*-if__name__=='__main__':print("作为主程序运行")else:print("package_test初始化")__init__.py源代码如下:

包9.4步骤

05:在

package_test同级目录下创建

test.py来调用

package_test包。

test.py源代码如下:#-*-coding:UTF-8-*-frompackage_test.module1importmodule1frompackage_test.module2importmodule2module1()module2()包9.4程序运行结果如图9-1所示。课后习题9.5程序运行结果如图9-1所示。1.把计算任务分解成不同模块的程序设计方法称为

。2.Python模块对应于包含

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论