版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章模块《Python程序开发案例教程(第2版))》学习目标/Target
了解模块的概念,能够说出什么是模块以及模块的分类掌握模块的导入方式,能够通过import和from...import...语句导入模块掌握常见内置模块的使用,能够使用random、time模块生成随机数或处理时间熟悉自定义模块,能够在程序中定义与使用自定义模块学习目标/Target
掌握模块的导入特性,能够在程序中合理使用__all__和__name__变量熟悉包的结构,能够归纳包目录下__init__.py文件的作用掌握包的导入方式,能够通过import和from...import...语句导入包掌握第三方模块的下载与安装,能够通过pip命令下载与安装指定的第三方模块章节概述/Summary在实际开发中,我们经常会遇到各种各样的需求,例如生成随机数、处理日期和时间、与数据库交互等,这些需求往往超出了Python语言本身的能力范围。为了满足这些需求,Python提供了丰富的模块,如前面学习中接触过的os和random模块。这些模块封装了各种功能和工具,能够帮助开发人员简化开发流程,提高工作效率。此外,开发人员也可以创建自己的模块,并将多个模块组织成包。本章将针对模块和包进行讲解。目录/Contents010203模块概述自定义模块模块的导入特性04Python的包目录/Contents050607第三方模块的下载与安装实例1:验证码实例2:文本进度条08实例3:高考计时器模块概述8.1
先定一个小目标!了解模块的概念,能够说出什么是模块以及模块的分类8.1.1模块的概念1.模块的概念模块(Module)是一种以.py为后缀的Python文件,用于组织相关的函数、变量或类,从而扩展Python的功能以实现更复杂的任务。程序中每个后缀名为.py的文件都是模块,一个模块通过导入其他模块,可以使用被导入模块的内容。8.1.1模块的概念2.模块分类介绍8.1.1模块的概念Python标准库中提供的一系列预先编写好的模块,不需要安装,便可以直接导入程序供开发人员使用。内置模块非官方制作发布的、供给大众使用的Python模块,不能直接导入程序中,安装成功方可导入并使用。第三方模块开发人员自行编写的、存放功能性代码的“.py”文件。自定义模块3.模块的好处8.1.1模块的概念代码的重用代码的组织和结构化提供额外的功能和工具社区和生态系统支持模块可以将相关的函数、变量和类定义封装成独立的单元模块提供了一种组织代码的机制,将相关的代码组织成一个独立的单元,有效提升代码的组织性和结构化Python提供了丰富的内置模块和第三方模块Python拥有庞大的开发者社区和活跃的生态系统
先定一个小目标!掌握模块的导入方式,能够通过import和from...import...语句导入模块8.1.2模块的导入1.使用import语句导入模块8.1.2模块的导入(1)使用import语句导入模块import语句支持一次导入一个模块,也支持一次导入多个模块。importtime
#导入一个模块importrandom,time
#导入多个模块示例import模块1,模块2,...语法格式1.使用import语句导入模块8.1.2模块的导入(1)使用import语句导入模块导入模块以后,可以通过“.”使用模块中的内容,包括全局变量、函数或类。importtime#导入time模块time.sleep(1)#调用time模块的sleep()函数示例模块名.变量名/函数名()/类名语法格式1.使用import语句导入模块8.1.2模块的导入(1)使用import语句导入模块如果在开发过程中需要导入一些名称较长的模块,那么可使用as关键字为这些模块起别名。importtimeast#导入time模块,并给该模块起别名为tt.sleep(1)#通过别名t调用sleep()函数示例import模块名as别名语法格式2.使用from...import...导入模块(2)使用from…import…语句导入模块使用from…import…方式导入模块之后,无需添加“模块名.”前缀,可以像使用当前程序中的内容一样使用模块中的内容。fromtimeimportsleep,time#导入time模块的sleep()和time()函数示例from模块名import变量名/函数名/类名语法格式8.1.2模块的导入(2)使用from…import…语句导入模块如果希望一次性导入模块中的全部内容,可以将from...import...语句中import后面的内容替换为通配符“*”。fromtimeimport*#导入time模块中的全部内容示例from模块名import*语法格式2.使用from...import...导入模块8.1.2模块的导入(2)使用from…import…语句导入模块from…import…语句也支持为模块或模块中的内容起别名。fromtimeimportsleepassl#导入sleep()函数,并起别名为slsl(1)#通过名称sl调用函数示例from模块名import变量名/函数名/类名as别名语法格式需要注意的是,虽然from...import...语句可以简化模块中内容的使用方式,但可能会出现模块中的变量名、函数名或类名与当前程序中的变量名、函数名或类名重名的问题。因此,相对而言使用import语句导入模块更为安全。2.使用from...import...导入模块8.1.2模块的导入
先定一个小目标!掌握常见内置模块的使用,能够使用random、time模块生成随机数或处理时间8.1.3常见的内置模块8.1.3常见的内置模块Python提供了丰富的内置模块,常见的内置模块包括生成随机数的random模块、时间处理的time模块、绘制图形的turtle模块等等。这些内置模块为开发者提供了不同的功能和用途,可以方便地进行各类任务的实现。常见的内置模块8.1.3常见的内置模块random模块为随机数模块,该模块中定义了多个可生成各种随机数的函数。random模块中的常用函数如表所示。1.random模块函数说明random()用于生成一个随机浮点数n,n的取值范围是0.0<=n<1.0uniform(a,b)用于生成一个指定范围内的随机浮点数n,若a<b,则n的取值范围是a<=n<=b;若a>b,则n的取值范围是b<=n<=arandint(a,b)用于生成一个指定范围内的整数n,n的取值范围是a<=n<=brandrange([start,]stop[,step])生成一个按指定基数递增的序列,再从该序列中获取一个随机数。choice(sequence)从序列中获取一个随机元素,参数sequence接收一个序列类型shuffle(x[,random])将序列x中的元素随机排列sample(sequence,k)从指定序列中获取长度为k的片段,随机排列后返回新的序列8.1.3常见的内置模块1.random模块(1)random()函数random()函数用于返回[0.0,1.0)区间内的一个随机浮点数。importrandomresult=random.random()#随机生成一个0.0~1.0之间的浮点数print(result)示例8.1.3常见的内置模块1.random模块(2)randint()函数randint()函数用于生成指定范围内的随机整数,该函数需要接收两个参数a和b,用于指定范围的上限或下限,a和b都会包含在内。若a大于b,则范围的上限为a,下限为b;若a小于b,则范围的上限为b,下限为a。importrandomprint(random.randint(1,8))#生成一个1到8之间的随机整数示例8.1.3常见的内置模块1.random模块(3)choice()函数choice()函数用于从指定序列(包括字符串、列表、元组等)中随机返回一个元素。importrandomname_li=["小坤","小刚","小明","小晴"]print(random.choice(name_li))#从name_li中获取一个随机元素示例8.1.3常见的内置模块time模块是时间模块,该模块中提供了一系列处理时间的函数,常用函数的说明如表所示2.time模块函数说明time()获取当前时间的时间戳,单位为秒sleep(secs)使程序暂停执行指定的时长,时长由参数secs指定,单位为秒localtime([secs])用于将表示本地时间的时间戳转换为时间元组strftime(format[,tuple])按照指定的格式将时间元组转换为时间字符串,格式由format决定asctime([tuple])将时间元组转换为格式如“SatJan1321:56:342018”的时间字符串strptime(string[,format])用于将时间字符串转换为时间元组mktime(tuple)用于将时间元组转换为时间戳8.1.3常见的内置模块2.time模块(1)time()函数time()函数用于返回以浮点数表示的从世界标准时间1970年1月1日00:00:00开始到现在的总秒数,也就是时间戳。importtimebefore=time.time()result=pow(1000,10000)#计算1000的10000次方after=time.time()interval=after-beforeprint(f"运行时长为{interval}秒")示例8.1.3常见的内置模块2.time模块(2)sleep()函数如果在开发过程中需要对某个功能或某段代码设置执行时间间隔,那么可以通过sleep()函数实现。sleep()函数会让程序暂停执行,并可自由设定暂停的时长。importrandom,timename_li1=["小飞","小羽","小韦","小明","小超"]name_li2=[]foriinrange(len(name_li1)):people=random.choice(name_li1)name_li1.remove(people),name_li2.append(people)time.sleep(2)print(f"此时的成员有{name_li2}")示例8.1.3常见的内置模块2.time模块(3)localtime()函数localtime()函数可以将表示本地时间的时间戳转换为时间元组。时间元组其实是struct_time对象,用于表示时间的结构信息,包含了时间的各个组成部分,例如年、月、日、时、分、秒等。localtime([secs])语法格式secs:表示时间戳。importtimeprint(time.localtime())print(time.localtime(34.54))示例8.1.3常见的内置模块2.time模块(4)strftime()函数strftime()函数将时间元组转换为指定格式的时间字符串。strftime(format[,t])语法格式format:用于指定转换后时间字符串的格式,接收包含设置时间格式控制符的字符串。t:时间元组,默认值为通过localtime()函数获取的本地时间importtimeprint(time.strftime('%Y-%b-%d%H:%M:%S'))示例8.1.3常见的内置模块2.time模块(4)strftime()函数time模块提供了很多控制符,常用的时间格式控制符及其功能说明如表所示。常用的时间格式控制符时间格式控制符说明%Y四位数的年份,取值范围为0001~9999%m月份(01~12)%d月中的一天%B本地完整的月份名称,比如January%b本地简化的月份名称,比如Jan%a本地简化的周日期8.1.3常见的内置模块2.time模块(4)strftime()函数time模块提供了很多控制符,常用的时间格式控制符及其功能说明如表所示。常用的时间格式控制符时间格式控制符说明%A本地完整周日期%H24小时制小时数(0~23)%l12小时制小时数(01~12)%p上下午,取值为AP或PM%M分钟数(00~59)%S秒(00~59)8.1.3常见的内置模块2.time模块(5)asctime()函数asctime()函数也可以实现格式化时间字符串,只不过它只能将时间元组转化为“FriJan1321:56:342023”形式的时间字符串,该函数的语法格式如下。asctime([t])语法格式t:时间元组,默认值为通过localtime()函数获取的本地时间importtimeprint(time.asctime())示例8.1.3常见的内置模块2.time模块(6)strptime()函数与mktime()函数strptime()函数可以将时间字符串转换为时间元组;mktime()函数可以将时间元组转换为时间戳,具体代码如下。importtimestr_dt="2023-02-2517:43:54"#将时间字符串转换成时间元组time_struct=time.strptime(str_dt,"%Y-%m-%d%H:%M:%S")#将时间元组转换成时间戳timestamp=time.mktime(time_struct)print(timestamp)示例自定义模块8.2
先定一个小目标!熟悉自定义模块,能够在程序中定义与使用自定义模块8.2自定义模块自定义模块在实际开发程序时,一般不会将所有代码都放在一个Python文件中,而是将耦合度较低的多个功能写入不同的Python文件中,制作成模块,并在其它Python文件中以导入模块的方式使用自定义模块中的内容。8.2自定义模块自定义模块Python文件中的每个Python文件都可以作为一个模块存在,文件名即为模块名。假设现有一名称为module_demo的Python文件,该文件中的内容如下:8.2自定义模块age=17defintroduce():print(f"mynameisitheima,I'm{age}yearsoldthisyear.")自定义模块与内置标准模块的导入方式相比,自定义模块也通过import语句和from…import…语句导入。使用import语句导入module_demo模块,并调用该模块中的introduce()函数,示例代码如下。8.2自定义模块importmodule_demomodule_roduce()print(module_demo.age)自定义模块如果程序中只需要使用module_demo模块中的introduce()函数,也可以直接使用from…import…导入该函数,示例代码如下。8.2自定义模块frommodule_demoimportintroduceintroduce()自定义模块以module_demo模块为例,将该模块的目录添加到Python模块的搜索路径,示例代码如下。8.2自定义模块importsysprint(sys.path)sys.path.append("E:\PythonProject\test")#使用test目录下的module_demo模块importmodule_demomodule_roduce()模块的导入特性8.3
先定一个小目标!掌握模块的导入特性,能够在程序中合理使用__all__变量8.3.1__all__变量__all__变量Python模块的开头通常会定义一个__all__变量,该变量的值实际上是一个列表,列表中包含的元素决定了在使用from…import*语句导入模块内容时通配符*所包含的内容。如果__all__中只包含模块的部分内容,那么from…import*语句只会将__all__中包含的部分内容导入程序。8.3.1__all__变量__all__变量__all__=["add","subtract"]defadd(a,b):returna+bdefsubtract(a,b):returna–bdefmultiply(a,b):returna*bdefdivide(a,b):if(b):returna/belse:print("error")calc.py模块fromcalcimport*print(add(2,3))print(subtract(2,3))print(multipty(2,3))print(divide(2,3))test.py模块程序运行这两行代码会出现错误,说明无法访问模块的这两个方法8.3.1__all__变量
先定一个小目标!掌握模块的导入特性,能够在程序中合理使用__name__变量8.3.2__name__变量__name__变量8.3.2__name__变量大型项目通常由多名开发人员共同开发,每名开发人员负责不同的模块。为了保证代码在整合项目后可以正常运行,开发人员通常会编写一些测试代码进行测试。然而,对整个项目而言测试代码是无用的。为了避免项目执行这些测试代码,Python为模块加入了__name__变量。__name__变量8.3.2__name__变量__name__变量通常与if条件语句一起使用,若模块是当前运行的模块,则__name__的值为__main__;若模块被其他模块导入,则__name__的值为模块名。if__name__=="__main__":#__name__的值为__main__print(multiply(3,4))print(divide(3,4))else:print(__name__)示例Python的包8.4
先定一个小目标!熟悉包的结构,能够归纳包目录下__init__.py文件的作用8.4.1包的结构包的结构为了更好地组织与管理模块,开发人员通常会根据不同业务将模块进行归类划分,并将功能相近的模块放到同一目录下。Python中的包是一个包含__init__.py文件的目录,该目录下还包含一些模块以及子包。8.4.1包的结构package├──__init__.py├──module_a1.py└──module_a2.py└──package_b├──__init__.py└──module_b.py包的结构__init__.py文件有两个作用,第一个作用是标识当前目录是一个Python的包;第二个作用是模糊导入,如果__init__文件中没有定义__all__变量,那么使用from...import*导入的内容为空。8.4.1包的结构
先定一个小目标!掌握包的导入方式,能够通过import和from...import...语句导入包8.4.2包的导入1.使用import语句导入包的模块(1)使用import语句导入包的模块使用import语句导入包中的模块时,需要在模块名的前面加上包名,格式为“包名.模块名”。若要使用已导入模块中的函数时,需要通过“包名.模块.函数名()”的方式使用函数。
importpackage_demo.module_demopackage_demo.module_demo.add(2,3)示例8.4.2包的导入2.使用from...import...语句导入包的模块(2)使用from...import...语句导入包的模块通过from…import…语句导入包中的模块时,若需要使用模块中的函数,需要通过“模块名.函数名()”的方式使用函数。
frompackage_demoimportmodule_demomodule_demo.add(2,3)示例8.4.2包的导入第三方模块的下载与安装8.5
先定一个小目标!掌握第三方模块的下载与安装,能够通过pip命令下载与安装指定的第三方模块8.5第三方模块的下载与安装第三方模块的下载与安装8.5第三方模块的下载与安装第三方模块不能直接在程序中导入与使用,而是需要提前安装到当前的开发环境中。第三方模块的安装需要借助pip工具,pip工具是一个通用的Python
包或模块的管理工具,它提供了查找、下载、安装、卸载Python包或模块的功能。第三方模块的下载与安装8.5第三方模块的下载与安装pipinstalljieba#安装最新版本的jieba模块示例pipinstall模块名
#安装最新版本的模块pipinstall模块名==版本号#安装指定版本的模块语法格式需要注意的是,pip是在线工具,它只有在联网的状态下才可以下载相应的模块资源,若网络未连接或网络环境不佳,则pip工具将无法顺利安装第三方模块。实例1:验证码8.6
先定一个小目标!8.6实例1:验证码根据任务分析实现实例1:验证码8.6实例1:验证码很多网站的注册登录业务都加入了验证码技术,以区分用户是人还是计算机,有效地防止刷票、论坛灌水、恶意注册等行为。目前验证码的种类层出不穷,其生成方式也越来越复杂,常见的验证码是由大写字母、小写字母、数字组成六位验证码。本实例要求编写程序,实现随机生成6位验证码的功能。使用列表保存价格信息。定义空列表用于保存用户选购商品的价格。接收输入的最大价格和最小价格。从价格列表中获取每个商品价格。判断商
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产6000吨-4氟苯酚等医药项目可行性研究报告模板-立项备案
- 《商务统计学Ch》课件
- 约分、通分课件
- 2025年中考英语一轮教材复习 八年级(下) Unit 6-2
- 跨境电子商务基础(山东外贸职业学院)知到智慧树答案
- 《企业国有资产管理》课件
- 残疾人康复和托养服务中心建设可行性研究报告
- 森林防火物资储备库项目可行性研究报告
- 农村一二三产业融合发展项目建设可行性研究报告
- 《肉制品加工工艺》课件
- 惯性导航系统误差传播特性分析报告
- 算法导论第三十四章答案
- 国开计算机应用基础(本)形考学习过程表现
- 机械毕业设计(论文)-小型绞肉机的设计【小型家用电动绞肉机】
- 二战(英语)PPT
- 浅谈农村小学《道德与法治》课程的现状及策略
- 行道树设计存在的问题及建议
- 井冈山介绍PPT革命圣地井冈山
- 收支管理业务内部控制流程图
- 生产订单流程说明
- 译林版初中英语全册短语汇总精篇
评论
0/150
提交评论