版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python核心编程与应用常用模块第六章新工科·数据科学与大数据系列01Python程序的构成Python程序的构成01Python项目的组织结构如图6-1所示Python项目封装后成为一个库,也就是标准库或第三方库。库由包组成,包相当于文件夹,用于对下一层的模块进行分类组织和管理,包的下一层是模块,模块就是Python程序文件(如py文件),模块的划分方便代码的独立和复用,包和模块的作用是针对项目进行分装。不同的模块有不同的功能,Python项目通过自定义一些模块来实现相对独立的功能,如有的模块专门实现邮件发送,有的模块实现通信连接,有的模块则实现安全和加密授权。模块里包含多个函数或类,类是一个抽象的逻辑概念(在本书第7章面向对象程序设计中展开讨论);函数则把若干语句组织在一起,实现某特定功能,供程序调用。所以,Python自上而下的组织结构是:顶层为项目(也称为库),项目下面是包,包包含多个模块,在模块中可以定义多个类,在类的内部定义的函数或者方法由若干语句构成,语句由表达式构成。02模块的安装和使用模块的安装和使用02模块的常用函数模块的常用函数的作用是描述模块的属性和方法.(1)dir()函数进入MS-DOS环境用dir命令显示当前文件夹下的所有文件和子文件夹的信息。在Python中,dir()是函数,用于返回某个类或函数所支持的属性和方法的列表。(2)globals()函数global是全局变量,而globals是函数,用于返回全局命名空间中的所有名字字典如TrueFalse、Str、int、Bool、Exception等。(3)locals()函数local是局部变量,而locals()函数用于返回局部命名空间中的名字字典。模块的安装和使用02模块的分类Python模块分为如下3类。①Python内置模块(builtin),存在于Python解析器的内部,可以直接使用。②标准库模块,安装Python时已经同步安装,使用时需先用import语句导入。③第三方模块,通常为开源库,使用前需要先安装。用户自己编写的模块等同于第三方库,可以作为其他人的第三方模块被使用。(1)内置模块builtins内置模块builtins用于显示所有内置模块的属性和函数>>>importbuiltins>>>print(dir(builtins))[ArithmeticError',···,'super','tuple','type','vars','zip']模块的安装和使用02模块的分类(2)标准库模块importmathimporttimeprint(mathsqrt(9))print(math.pow(3,3))print(time.asctime())print(time.time())运行结果:3.027.0Thu
Nov12
13:41:46
20201605159706.8561072Pvthon的标准库庞大,提供的组件涉及范围广泛,日常编程中许多问题的解决都可以找到相应的标准库。模块的安装和使用02模块的分类(3)第三方模块大量免费开源的第三方库(模块)是Python受到广泛欢迎的原因之一。【例6-3】显示汉语拼音的第三方库。fromxpinyinimportPinyinp=Pinyin()print(p.get_pinyin("北京"))
#运行结果:bei-jing使用xpinyin库前需要先安装这个第三方库,方法如下:>>>pip
install
xpinyin模块的安装和使用02模块的分类(4)自定义模块自己开发的模块用import语句将文件加载进来即可使用。【例6-4】自定义模块calc.py,实现加、减、乘除运算。#保存为文件calc.pynuma=numb=0defadd():returnnuma+numbdefsub():returnnuma-numbdefmul():returnnuma*numbdefdiv():returnnuma/numb主程序实现数值计算,方法是导入自定义模块calc.py并调用其函数。模块的安装和使用02模块的分类importcalc#导入模块calc.pycalc.numa=12calc.numb=3print(calc.add())print(calc.sub())print(calc.mul())print(calc.div())模块的安装和使用02模块的使用方法(1)使用import语导入模块其语法格式如下:import模块名1
[
as
模块别名1
](,模块名2
[
as模块别名2
])···例如,导入math库,导入numpy库并取别名np。>>>importmath>>>import
numpy
as
np使用此方式导入模块后,模块内的函数和属性的使用方式为:模块名.函数名或别名.函数名模块名.变量名或别名.变量名模块的安装和使用02模块的使用方法(2)用iom语句导入模块from语句用于导入模块中指定的成员,如函数、变量,而不是导入全部函数。其语法格式如下:from
模块名
import
模块成员名1
[as别1](,模块成员名2
[
as别名2])···使用此方式导入模块后,可以直接使用模块内的函数和属性。【例6-6】直接使用导入后的模块成员名。frommathimportsin,pi,e
#只导入math库中指定的三个成员print(sin(pi))print(pi)print(e)导入一个模块内的所有内容:from模块名import
*模块的安装和使用02import导入模块的搜索路径当导入一个模块时,Python解释器要搜索该模块,默认的搜索顺序为:①当前目录下查找;②若当前目录下找不到,则搜索PYTHONPATH中指定的每个目录;③如果还找不到那么Python解释器搜索标准库目录,标准库目录即Python的安装目录。UNIX操作系统的默认安装目录为/usr/local/lib/python。Windows的默认安装目录为当前用户AppData\Local\Programs\Python\Python38。sys.path记录了Python解释器搜索模块的路径。sys是一个系统模块。模块的安装和使用02sys.modules查看加载到内存的模块Python中所有已加载到内存的模块都放在sys.modules列表中,当import导入一个模块时,首先会在这个列表中查找是否已经加载了此模块,如果已加载,那么只是将模块的名字加入正在调用import的模块的local名字空间中,否则按照sys.path的搜索路径查找模块文件模块文件的扩展名可以是.py、.pyc、.pyd,找到后将模块载入内存,加入sys.modules,并将名称导入当前的local名字空间。03sys模块sys模块03sys模块的使用使用sys模块需要先导入:importsys例如,查看sys模块中的属性和方法:>>>importsys>>>dir(sys)
#查看模块中的属性和方法sys模块提供了很多重要属性和方法。sys模块03接受命令行参数sys模块除了可以获取系统的属性和函数,还可以与终端进行交互操作。下面以Windows操作系统为例,演示常用的命令行参数。先编写一个cmdline.py程序,然后在终端用命令行模式运行该程序:(venv)E:\Project\Pycharm>pythoncmdline.py-h-v那么,在命令行模式下Python如何接收-h、-v参数呢?答案是通过sysargv接收命令。sysargv是一个字符串列表,可以存储多个参数,通过索引来提取数据:sys.argv[0]、sys.argv[1]、sys.argv[2]。04随机数模块随机数模块04基本方法Python中的随机数使用随机数种子来产生,只要种子相同,产生的随机数序列都相同,即所产生的数、数与数之间的顺序都是确定的,因此使用随机数种子可以复现随机数序列。常用的随机数方法如表6-1所示。>>>random.seed(10)#产生种子10对应的序列>>>random.getrandbits(16)37885随机数模块04产生随机整数的方法产生某个范围内的随机整数的方法如表6-2所示。随机数模块04随机序列方法表6-3是关于序列的随机操作方法,从序列中随机选择一个元素,或将序列元素随机排列,或者返回打乱后的序列等。随机数模块04真值分布方法真值分布方法用于产生服从各类分布的随机数,如表6-4所示。05日期和时间模块日期和时间模块05time库Python中时间有三种表示方式,分别是时间戳、格式化的时间字符串和结构化时间,常用函数如表6-5所示。日期和时间模块05time库①时间戳(timestamp):从1970年1月10点开始计时直到此刻为止所经过的秒数如1506388236.2162435。时间戳用timetime()实时获得,是一个浮点数,可以进行加减运算②格式化的时间字符串(stringtime):用年月日时分秒这样常见的时间字符格式表示例如:2020-07-2609:12:48,可以通过time.asctime()获得。③结构化时间(structtime):返回包含了年月日时分秒的多个元素的元组。日期和时间模块05time库函数strftime()和stptime()是一对互逆的操作,在日期格式和字符串格式之间转换,当以字符串形式显示日期时间时,涉及格式显示的问题。例如:time.strftime(%Y-%m-%d%H:M:%SA',time.localtime())其中的%Y、%m等就是日期时间的格式控制符,如表6-6所示。time模块只支持时间表示到2038年,若需处理此范围外的日期,则推荐datetime模块。日期和时间模块05datetime库datetime库重新封装了time库,提供更多接口,提供的类有date、time、datetime、timedelta、tzinfo。日期和时间模块05datetime库(1)datetime常量datetimeMINYEAR:datetimedate或datetimedatetime对象允许的年份的最小值,值为1。datetimeMAXYEAR:datetimedate或datetimedatetime对象允许的年份的最大值,值为9999。【例6-26】显示datetime常量。importdatetimeprint(datetime.MAXYEAR)print(datetime.MINYEAR)运行结果:99991日期和时间模块05datetime库(2)datetime.date类使用前需要先导入date类:fromdatetimeimportdatedate类常用方法如表6-8所示。日期和时间模块05datetime库(3)datetime.timedatetimetime方法使用前需导入time类:fromdatetimeimporttime.time类常用方法如表6-9所示。06JSON模块JSON模块06dumps和dump序列化方法dumps方法可以将对象序列化成字符的形式;dump方法是将序化的str保存到文件中,便于信息的持久化保存。(1)dumps方法dumps方法的语法格式如下:json.dumps(obj)用于将对象obj序列化成字符串的形式,对象包括所有的基本数据类型。(2)dump方法dump方法的语法格式如下json.dump(obj,strfile)将对象obi保存成文件strfile,即把序列化的字符串保存到文件中。JSON模块06loads和load反序列化方法loads和load方法的语法格式如下:#把字符串str格式的JSON对象,转换成Python对象json.loads(str)#从文件strfile中读取字符串格式的JSON对象,转换成Python对象json.load(strfile)区别在于:loads方法只完成反序列化,而load方法完成从文件中读取数据并完成反序列化操作。JSON模块06json和pickle模块json模块和pickle模块的四种用法相同。ison模块序列化出来的是通用格式的字符串,其他编程语言都能识别。pickle模块序列化出来的是二进制格式,其他编程语言不能识别,只能使用Python处理pickle可以序列化函数,若其他文件调用该函数,则必须在该文件中存在该函数的定义。07JSON模块案例JSON模块案例07解决思路①将每本图书信息存储为字典格式,包含图书编号、标题、作者、价格、类别、出版社属性。②将多本图书存储为列表。③将Python的图书列表,序列化成JSON对象,通过jsondumps或者jsondump写入JSON文件。④每次新增图书时,查询该图书是否已经存在,若已存在,则给出提示信息,不重复保存图书;若不存在,则以字典格式追加到图书列表中。⑤将图书列表重新写入文件。08正则表达式模块正则表达式模块08解决思路1.match方法match方法尝试从字符串的起始位置匹配模式,语法格式如下:re.match(pattern,string,flags=0)若匹配成功,则返回一个匹配对象,否则返回None。返回的匹配对象可以使用group(num)或groups方法来获取匹配表达式。match方法的参数如表6-12所示,获取的匹配表达式如表6-13所示。正则表达式模块08解决思路正则表达式模块08解决思路2.search方法search方法扫描整个字符串并返回第一个匹配成功的对象,语法格式如下:re.search(pattern,string,flags=0)参数说明同match方法。若匹配成功,则返回一个匹配的对象Match,否则返回None。可以使用group(num)或groups方法获取匹配表达式。正则表达式模块08解决思路3.findall和finditer方法findall方法在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,若没有找到匹配的,则返回空列表。findal1方法的语法格式如下:re.findall(string[,pos[,endpos]])finditer方法是在字符串中找到正则表达式所匹配的所有子串,并将它们作为一个迭代器返回,其语法格式如下:re.finditer(pattern,string,flags=0)refindall和refinditer方法都是匹配所有子串,只是前者返回列表,后者返回迭代器。正则表达式模块08解决思路4.split方法split方法按照能够匹配的子串,将字符串分割后返回列表。在第1章讲解字符串时使用过split方法,如"helloworld"split0,结果是[helloworld],默认用空格作为匹配的正则表达式split方法的语法格式如下:re.split(pattern,string[,maxsplit=0,flags=0])split方法的参数如表6-14所示。正则表达式模块08解决思路5.sub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度执业兽医考试黑钻押题(预热题)附答案详解
- 宫血患者的家属支持
- 呼吸系统护理:改善患者呼吸功能的实践
- 综合商务英语B1 U6
- 妇产科腹部手术后预防伤口愈合不良护理方法
- 2026年乡镇综合行政执法队下属事业单位选聘考试试题(附答案)
- 客户投诉处理流程及措施商洽函(3篇)范文
- 文件分类与归档指南手册
- 2024-2025学年度中医执业医师题库试题含答案详解(考试直接用)
- 2024-2025学年度执业药师题库含答案详解【轻巧夺冠】
- 2024年珠海辅警协警招聘考试真题附答案详解(完整版)
- 生物质颗粒燃料生产标准
- 建筑工程行业“防汛、防台风、防雷电”三防安全培训
- 科研项目团队介绍
- 2026年江西电力职业技术学院单招职业适应性考试必刷测试卷附答案
- (独家!)2025年3月29日全国事业单位事业编联考A类《职测》真题及答案
- 知到《微观经济学(重庆财经学院)》智慧树网课完整版章节测试答案
- 2025年护理模拟试题(附答案)
- 《自我管理》课件-2. 第一单元第二课 认清自身角色
- 交通运输执法培训知识课件
- 2025年9月17日事业单位联考《综合应用能力(A类)》试题及答案
评论
0/150
提交评论