Python程序设计课件第8章模块和包.pptx

上传人(卖家):晟晟文业 文档编号:3714428 上传时间:2022-10-06 格式:PPTX 页数:46 大小:898.72KB
下载 相关 举报
Python程序设计课件第8章模块和包.pptx_第1页
第1页 / 共46页
Python程序设计课件第8章模块和包.pptx_第2页
第2页 / 共46页
Python程序设计课件第8章模块和包.pptx_第3页
第3页 / 共46页
Python程序设计课件第8章模块和包.pptx_第4页
第4页 / 共46页
Python程序设计课件第8章模块和包.pptx_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、 源程序模块结构源程序模块结构 模块的定义与使用模块的定义与使用 Python中的包中的包 引用其他模块引用其他模块 日期时间函数日期时间函数 测试及打包测试及打包第八章 模块和包参考书目Python 程序设计目录 源程序模块结构源程序模块结构 模块的定义与使用模块的定义与使用 Python中的包中的包 引用其他模块引用其他模块 日期时间函数日期时间函数 测试及打包测试及打包这里说明图片内容 源程序模块结构Python的程序是由包(package)、模块(module)和函数组成。模块是处理某一类问题的集合,模块由函数和类组成。包是由一系列模块组成的集合。源程序模块结构 包就是有一个完成特定任

2、务的工具箱,Python提供了许多有用的工具包,如字符串处理、图形用户接口、Web应用、图形图像处理等。一个程序完整的结构,有如下几部分组成:(1)模块文档 模块文档使用三双引号注释的形式,简要介绍模块的功能及重要全局变量的含义。(2)模块导入 导入需要调用的其他模块。模块只能被导入一次,被导入模块中的函数代码并不会被自动执行,只能被当前模块主动(显式)调用。源程序模块结构(3)变量定义在这里定义的变量本模块中的所有函数都可直接使用。(4)类定义语句所有类都需要在这里定义。当模块被导入时,class语句会被执行,类就会被定义。(5)函数定义语句此处定义的函数可以通过CircleArea.cal

3、cuArea()在外部被访问到,当本模块被其他模块导入时def语句会被执行,其他模块可调用calcuArea这个函数。(6)主程序无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。模块的定义与使用 Python提供了强大的模块支持,主要体现为不仅在Python标准库中包含了大量的模块(称为标准模块),而且还有很多第三方模块,另外开发者自己也可以开发自定义模块。通过这些强大的模块支持,将极大地提高我们的开发效率。模块的英文是Modules,可以认为是一盒(箱)主题积木,通过它可以拼出某一主题的东西。这与函数不同,

4、一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是很多积木,所以也可以说模块相当于一盒积木。模块的定义与使用1 模块的概念模块模块是把一组相关的名称、函数、类或者是它们的组合组织到一个文件中。如果说模块是按照逻辑来组织Python代码的方法,那么文件便是物理层上组织模块的方法。因此一个文件被看作一个独立的模块,一个模块也可以被看作一个文件。模块的文件名就是模块的名字加上扩展名.py。2 使用import语句导入模块使用模块需要先以模块的形式加载模块中代码,这样就可以使用import语句实现:import 模块名称 as 别名 使用import语句导入模块时,模块时区分字母大小写的,比

5、如:import os,可以在一行内导入多个模块,如:import time,os,sys。模块的定义与使用3 使用fromimport语句导入模块 在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace,即记录对象名字和对象之间对应关系的空间。目前Python的命名空间大部分都是通过字典来实现的。其中,key是标识符;value是具体对象。),并且在该命名空间中执行与.py文件相关的所有语句。模块的定义与使用3 使用fromimport语句导入模块在执行时,需在具体的变量、函数和类名前加上“模块名.”前缀。如果不想每次都导入模块时都创建一个新

6、的命名空间,而是将具体的定义导入到当前的命名空间中,这时就可以使用fromimport语句。使用fromimport语句导入模块后,不需要再添加前缀,直接通过具体的变量、函数和类名等访问即可。fromimport语句的语法格式如下:from modelname import member模块的定义与使用4模块搜索目录模块的定义与使用有时候导入模块操作会失败,如:import oosTraceback(most recent call last):File,line 1,in ModuleNotFoundError:No module named oos 发生这样的错误时,解析器会提示说无法访问

7、请求的模块,可能的原因是模块不在搜索路径里,从而导致了路径搜索的失败。4模块搜索目录模块的定义与使用当使用import语句导入模块时,默认的查找顺序:首先是在当前目录(即执行的Python脚本文件所在的目录)下查找;其次到PYTHONPATH(环境变量)下的每个目录中查找;最后到Python的默认安装目录下查找。查找的各个目录的具体位置保存在标准模块sys的sys.path变量中。查看本机sys.path的内容的代码如下:import sysprint(sys.path)4模块搜索目录模块的定义与使用注意,不同的系统,搜索路径一般都不同。添加指定的目录到sys.path有三种方法:(1)sys

8、.path.append()例如,把“c:practice”目录添加到sys.path目录中,可以采用如下代码:import syssys.path.append(“c:/practice”)缺点:需要执行代码,且只为内存临时修改,程序退出后清空变量。4模块搜索目录模块的定义与使用(2)在系统环境中新增)在系统环境中新增PYTHONPATH变量,指向想要的变量,指向想要的path搜索路径搜索路径。缺点:修改了环境变量,对复杂环境需求易造成冲突。(3)在)在site-packages下建立一个扩展名为下建立一个扩展名为.pth的文件,并添加需要自的文件,并添加需要自定义包含引入的路径,否则新添加

9、的目录不起作用。定义包含引入的路径,否则新添加的目录不起作用。修改完成后,就可以加载自己的模块了。只要这个列表中的某个目录包含这个文件,该模块就会被正确导入。如:使用sys.modules可以查看当前导入了哪些模块和它们来自什么地方。sys.modules是一个字典,使用模块名作为键(key),对应的物理地址作为值(value)。5模块内建函数模块的定义与使用1._import_()函数import语句调用了该函数来实现模块的导入,提供这个函数是为了让有特殊需要的用户可以覆盖它,实现自定义的导入算法。语法如下:_import_(name,globals,locals,fromlist,leve

10、l)5模块内建函数模块的定义与使用2.globals()函数和locals()函数globals()和locals()两个内建函数分别返回调用处可以访问的全局和局部命名空间中的名称组成的字典。3.reload()函数reload()函数可以重新导入一个已经导入的模块from imp import reloadreload(module)module是用户想要重新导入的模块,模块必须是全部导入 reload()函数的参数必须是模块自身而不是模块名称的字符串6绝对导入和相对导入模块的定义与使用1.绝对导入在import语句或者from导入模块,模块名称最前面不是以.点开头的绝对导入总是去搜索模块搜

11、索路径中找2.相对导入 只能在包内使用,且只能用在from语句中 使用.点号,表示当前目录内.表示上一级目录 不要在顶层模块中使用相对导入 Python中的包使用模块可以避免函数名和变量名重名引发的冲突。面对模块名重复如何解决的问题,Python中提出了包(Package)的概念。所谓包的是一个有层次的文件目录结构,通常将一组功能相近的模块组织在一个目录下,它定义了一个由模块和子包组成的Python应用程序执行环境。包可以解决如下问题:(1)把命名空间组织成有层次的结构;(2)允许程序员把有联系的模块组合到一起;(3)允许程序员使用有目录结构而不是一大堆杂乱无章的文件;(4)解决有冲突的模块名

12、称。1Python程序的包结构包简单理解就是“文件夹”,作为目录存在的,包的另外一个特点就是文件夹中必须有一个_init_.py文件,包可以包含模块,也可以包含包。常见的包结构如下:Python中的包2创建和使用包1.创建包创建包实际上就是创建一个文件夹,并且在该文件夹中创建一个名称为“_init_.py”的Python文件。在 _init_.py文件中,可以不编写任何代码,也可以编写一些Python代码。在_init_.py文件中所编写的代码,在导入包时会自动执行。比如在C盘的根目录下创建一个名称为config的包,具体步骤如下:(1)在计算机的C盘目录下,创建一个名称为config的文件夹

13、。(2)在config文件夹下,创建一个名称为“_init_.py”的文件。至此,名称为config的包就创建完成了,然后可以在该包下创建所需要的模块。Python中的包2创建和使用包2.使用包对于包的使用通常有3种方式:(1)通过“import 完整包名.模块名”的形式加载指定模块。比如在config包中,有个size的模块,导入时,可以使用代码:import config.size若在size模块中定义了3个变量,比如:length=30width=20height=10创建“main.py”文件,在导入size模块后,在调用length、width和height变量时,需要在变量名前加入

14、“config.size”前缀。Python中的包2创建和使用包(2)通过“from 完整包名 import 模块名”的形式加载指定模块。与第一种方式的区别在于,在使用时,不需要带包的前缀,但需要带模块名称。(3)通过“from 完整包名.模块名 import 定义名”的形式加载指定模块。与前两种方式的区别在于,通过该方式导入模块的函数、变量或类后,在使用时直接使用函数、变量或类名即可。Python中的包 引用其他模块 在Python中,除了可以自定义模块外,还可以引用其他模块,比如标准模块和第三方模块。1第三方模块的下载与安装 在Python中,除了可以使用Python内置的标准模块外,还可

15、以使用第三方模块。这些第三方模块可以在Python的官方推出的网站(https:/pypi.org/)上找到。在使用第三方模块,需要先下载,并安装,然后就可以使用标准模块一样导入并使用了。下载和安装第三方模块使用Python提供的包管理工具:pip命令实现 引用其他模块1第三方模块的下载与安装pip命令的语法格式:pip 模块名参数说明:命令:用指定要执行的命令。常用的命令参数值:install(用于安装第三方模块)uninstall(用于卸载已经安装的第三方模块)list(用于显示已经安装的第三方模块)等。模块名:可选参数,用于指定要安装或者卸载的模块名,当命令为install或者unins

16、tall时不能省略。引用其他模块1第三方模块的下载与安装例如,安装第三方的numpy模块。如果未配置环境变量,在Python的安装根目录下的Scripts文件夹路径中,在命令窗口中输入以下代码:pip install numpy安装完成之后,将显示如图所示界面:引用其他模块1第三方模块的下载与安装在Pycharm中,可以通过“File”“Setting”查看已经安装模块。引用其他模块1第三方模块的下载与安装3管理包(安装、升级、卸载)在DOS命令窗口运行pip命令对包进行管理了,如:1.指定安装的软件包版本:通过使用=,=,requirements.txt,将需要的模块导出到文件里,然后在另一

17、个地方pip install-r requirements.txt 再导入。引用其他模块2标准模块的使用在Python中,自带了一些实用模块,称为标准模块。对于标准模块,可以直接使用import语句导入Python文件中使用。比如导入标准模块random的代码:import random 通常情况下,在导入标准模块是,如果模块名比较长,可以使用as关键字为其指定别名。导入标准模块后,可以通过模块名调用其提供的函数。引用其他模块3常见的标准模块除了上一节举例讲述的random模块外,Python还提供了大约200多个内置的标准模块,涵盖了Python运行服务、文字模式匹配、操作系统接口、数学运算

18、、对象永久保存、网络和Internet脚本以及GUI构建等方面 引用其他模块日期时间函数 Python有很多处理日期和时间的方法,其中转换日期格式是最为常见的。Python提供了time和calendar模块用于格式化日期和时间。本节将针对这两个模块的函数进行详细地介绍。1时间函数time表现方式有三种:1时间戳(timestamp)的方式时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。返回的是float类型,返回时间戳的函数有time()、clock()。2元组(struct_time)方式struct_time元组共有9个元素,返回struct_time的函数主要有

19、gmtime(),localtime(),strptime()。日期时间函数1时间函数表struct_time元组的9个元素 日期时间函数序号序号属性属性值值1tm_year比如20202tm_mon1 到 123tm_mday1 到 314tm_hour0 到 235tm_min0 到 596tm_sec0 到 61(60或61 是闰秒)7tm_wday0到6(0是周一)8tm_yday1 到 366(儒略历)9tm_isdst-1,0,1,-1是决定是否为夏令时的旗帜1时间函数3格式化字符串(format time)方式格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式,

20、比如“2018-5-11”。日期时间函数1时间函数把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。在这个函数中,format默认为:%a%b%d%H:%M:%S%Y。他们之间转换关系如图所示:日期时间函数1时间函数把一个格式化时间字符串转化为struct_time的格式化符号。日期时间函数符号意义%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%h 12小时制小时数(01-12)%M 分钟数(00=59)%S 秒(00-59)%a 本

21、地简化星期名称%A 本地完整星期名称%b 本地简化的月份名称%B 本地完整的月份名称%c 本地相应的日期表示和时间表示%j 年内的一天(001-366)%p 本地A.M.或P.M.的等价符%U 一年中的星期数(00-53)星期天为星期的开始%w 星期(0-6),星期天为星期的开始%W 一年中的星期数(00-53)星期一为星期的开始%x 本地相应的日期表示%X 本地相应的时间表示%Z 当前时区的名称%号本身 2日期函数datetime内置对象关系如图所示:分为date/time/timedelta/tzinfo 四个类,其中date、tzinfo又分别有各自的子类datetim/timezone

22、 日期时间函数3日历函数calendar模块有很广泛的方法用来处理年历和月历,如打印某月的月历,代码如下。日期时间函数import calendarcal=calendar.month(2020,5)print(以下输出2020年5月份的日历:)print(cal)运行结果如图所示。3日历函数除此之外,calendar模块还提供了很多内置函数:日期时间函数测试及打包实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在.py文件中添加一些测试信息。【例】对“test.py”文件中的add()函数代码测试。def add(a,b):return a

23、+b#用来进行测试 ret=add(12,22)print(in test.py file,12+22=%d%ret)运行结果:in test.py file,12+22=34测试及打包如果此时,在其他py文件中引入了此文件,测试的那段代码也会执行。test.py中的测试代码,应该是单独执行test.py文件时才应该执行的,不应该是其他的文件中引用而执行。python中有个内置变量_name_,它在文件被直接执行时等于_main_,而作为模块被导入时等于模块名。测试及打包为了解决这个问题,我们可以在测试语句前面加上一个判断:if _name_=_main_:#用来进行测试 ret=add(12

24、,22)print(in test.py file,12+22=%d%ret)保证后面的测试语句在导入时不再执行。测试及打包创建一个test_pub的文件夹,将包放在test_pub文件夹中,然后在与包同级的目录中创建一个setup.py的文件。mymodule目录结构体如下:测试及打包1.编辑setup.py文件py_modules需指明所需包含的py文件:from distutils.core import setupsetup(name=压缩包的名字,version=1.0,description=描述,author=作者,py_modules=sub1.aa,sub1.bb,sub2.cc,sub2.dd)2.构建模块python setup.py build测试及打包3.生成发布压缩包python setup.py sdist4.模块安装、使用找到模块的压缩包(拷贝到其他地方),解压,进入文件夹,执行命令:python setup.py install注意:如果在install的时候,执行目录安装,可以使用:python setup.py install-prefix=安装路径

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python程序设计课件第8章模块和包.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|