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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 通过使用==, >=, <=, >, <来指定一个版本号。 pip install markdown==2.0
Python中的包
使用模块可以避免函数名和变量名重名引发的冲突。面对模块名重复 如何解决的问题,Python中提出了包(Package)的概念。所谓包的是 一个有层次的文件目录结构,通常将一组功能相近的模块组织在一个 目录下,它定义了一个由模块和子包组成的Python应用程序执行环境。 包可以解决如下问题: (1)把命名空间组织成有层次的结构; (2)允许程序员把有联系的模块组合到一起; (3)允许程序员使用有目录结构而不是一大堆杂乱无章的文件; (4)解决有冲突的模块名称。
(3)在site-packages下建立一个扩展名为.pth的文件,并添加需要自 定义包含引入的路径,否则新添加的目录不起作用。
修改完成后,就可以加载自己的模块了。只要这个列表中的某 个目录包含这个文件,该模块就会被正确导入。如: 使用sys.modules可以查看当前导入了哪些模块和它们来自什么 地方。sys.modules是一个字典,使用模块名作为键(key),对应 的物理地址作为值( value)。
from modelname import member
4模块搜索目录
模块的定义与使用
有时候导入模块操作会失败,如:
import oos Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'oos'
2创建和使用包
Python中的包
2.使用包 对于包的使用通常有3种方式: (1)通过“import 完整包名.模块名”的形式加载指定模块。 比如在config包中,有个size的模块,导入时,可以使用代码:
import config.size 若在size模块中定义了3个变量,比如: length = 30 width = 20 height = 10 创建“main.py”文件,在导入size模块后,在调用length、width和height变量 时,需要在变量名前加入“config.size”前缀。
1Python程序的包结构
Python中的包
包简单理解就是“文件夹”,作为目录存在的,包的另外一个特点就 是文件夹中必须有一个__init__.py文件,包可以包含模块,也可以包 含包。常见的包结构如下:
Package_1
__init__.py
module_1.py
module_2.py ......
3 使用from…import语句导入模块 模块的定义与使用
在执行时,需在具体的变量、函数和类名前加上“模块名.”前缀。 如果不想每次都导入模块时都创建一个新的命名空间,而是将 具体的定义导入到当前的命名空间中,这时就可以使用 from…import语句。使用from…import语句导入模块后,不需要 再添加前缀,直接通过具体的变量、函数和类名等访问即可。 from…import语句的语法格式如下:
① install(用于安装第三方模块) ② uninstall(用于卸载已经安装的第三方模块) ③ list(用于显示已经安装的第三方模块)等。 ➢ 模块名:可选参数,用于指定要安装或者卸载的模块名,当命令为install或者 uninstall时不能省略。
1第三方模块的下载与安装
引用其他模块
例如,安装第三方的numpy模块。如果未配置环境变量,在Python的 安装根目录下的Scripts文件夹路径中,在命令窗口中输入以下代码:
模块的定义与使用
Python提供了强大的模块支持,主要体现为不仅在 Python标准库中包含了大量的模块(称为标准模块),而且还 有很多第三方模块,另外开发者自己也可以开发自定义模块。 通过这些强大的模块支持,将极大地提高我们的开发效率。
模块的英文是Modules,可以认为是一盒(箱)主题积 木,通过它可以拼出某一主题的东西。这与函数不同,一个函 数相当于一块积木,而一个模块中可以包括很多函数,也就是 很多积木,所以也可以说模块相当于一盒积木。
2 使用import语句导入模块
模块的定义与使用
使用模块需要先以模块的形式加载模块中代码,这样就可以使 用import语句实现:
import 模块名称 [as 别名] ➢ 使用import语句导入模块时,模块时区分字母大小写的,比
如:import os, ➢ 可以在一行内导入多个模块,如:import time,os,sys。
源程序模块结构
Python的程序是由包(package)、模块(module)和函数组 成。模块是处理某一类问题的集合,模块由函数和类组成。包是由一 系列模块组成的集合。
源程序模块结构
包就是有一个完成特定任务的工具箱,Python提供了许多有用 的工具包,如字符串处理、图形用户接口、Web应用、图形图像处 理等。一个程序完整的结构,有如下几部分组成:
• (1)模块文档 • 模块文档使用三双引号注释的形式,简要介绍模块的功能及重要全
局变量的含义。 • (2)模块导入 • 导入需要调用的其他模块。模块只能被导入一次,被导入模块中的
函数代码并不会被自动执行,只能被当前模块主动(显式)义的变量本模块中的所有函数都可直接使用。 (4)类定义语句 所有类都需要在这里定义。当模块被导入时,class语句会被执 行,类就会被定义。 (5)函数定义语句 此处定义的函数可以通过CircleArea. calcuArea ()在外部被访 问到,当本模块被其他模块导入时def语句会被执行,其他模块可 调用calcuArea这个函数。 (6)主程序 无论这个模块是被别的模块导入还是作为脚本直接执行,都会执 行这部分代码。通常这里不会有太多功能性代码,而是根据执行 的模式调用不同的函数。
pip install numpy 安装完成之后,将显示如图所示界面:
1第三方模块的下载与安装
引用其他模块
在Pycharm中,可以通过“File”“Setting”查看已经安装模块。
1第三方模块的下载与安装
引用其他模块
3.管理包(安装、升级、卸载) 在DOS命令窗口运行pip命令对包进行管理了,如: 1.指定安装的软件包版本:
例如,把“c:\practice”目录添加到sys.path目录中,可以采用如下代码:
import sys sys.path.append(“c:/practice”)
缺点:需要执行代码,且只为内存临时修改,程序退出后清空变量。
4模块搜索目录
模块的定义与使用
(2)在系统环境中新增PYTHONPATH变量,指向想要的path搜索路径。 ➢ 缺点:修改了环境变量,对复杂环境需求易造成冲突。
引用其他模块
在Python中,除了可以自定义模块外,还可以引用 其他模块,比如标准模块和第三方模块。
1第三方模块的下载与安装
引用其他模块
在Python中,除了可以使用Python内置的标准模块外,还可以使用 第三方模块。这些第三方模块可以在Python的官方推出的网站 (https:///)上找到。
2创建和使用包
Python中的包
(2)通过“from 完整包名 import 模块名”的形式加载指定模块。 ➢ 与第一种方式的区别在于,在使用时,不需要带包的前缀,但需要 带模块名称。
(3)通过“from 完整包名.模块名 import 定义名”的形式加载指定模块。 ➢ 与前两种方式的区别在于,通过该方式导入模块的函数、变量或类 后,在使用时直接使用函数、变量或类名即可。
在使用第三方模块,需要先下载,并安装,然后就可以使用标准模块 一样导入并使用了。下载和安装第三方模块使用Python提供的包管理工 具:pip命令实现
1第三方模块的下载与安装
引用其他模块
pip命令的语法格式: pip <命令> [模块名]
参数说明: ➢ 命令:用指定要执行的命令。常用的命令参数值:
查找的各个目录的具体位置保存在标准模块sys的sys.path变量中。查看本 机sys.path的内容的代码如下: import sys print(sys.path)
4模块搜索目录
模块的定义与使用
注意,不同的系统,搜索路径一般都不同。 添加指定的目录到sys.path有三种方法: (1)sys.path.append()
5模块内建函数
模块的定义与使用
1. _import_()函数 import语句调用了该函数来实现模块的导入,提供这个函 数是为了让有特殊需要的用户可以覆盖它,实现自定义的 导入算法。语法如下:
__import__(name[, globals[, locals[, fromlist[, level]]]])
5模块内建函数
模块的定义与使用
2. globals()函数和locals()函数
globals()和locals( )两个内建函数分别返回调用处可以访问的全局和
局部命名空间中的名称组成的字典。
3. reload()函数 reload()函数可以重新导入一个已经导入的模块
from imp import reload reload(module) ➢ module是用户想要重新导入的模块,模块必须是全部导入 ➢ reload()函数的参数必须是模块自身而不是模块名称的字符串
2创建和使用包
Python中的包
1.创建包 创建包实际上就是创建一个文件夹,并且在该文件夹中创建一个名 称为“__init__.py”的Python文件。在 __init__.py文件中,可以不编写 任何代码,也可以编写一些Python代码。在__init__.py文件中所编写 的代码,在导入包时会自动执行。 比如在C盘的根目录下创建一个名称为config的包,具体步骤如下: (1)在计算机的C盘目录下,创建一个名称为config的文件夹。 (2)在config文件夹下,创建一个名称为“__init__.py”的文件。 至此,名称为config的包就创建完成了,然后可以在该包下创建所 需要的模块。
1 模块的概念
模块的定义与使用
• 模块
模块是把一组相关的名称、函数、类或者是它们的组合组织到 一个文件中。如果说模块是按照逻辑来组织Python代码的方法, 那么文件便是物理层上组织模块的方法。因此一个文件被看作 一个独立的模块,一个模块也可以被看作一个文件。模块的文 件名就是模块的名字加上扩展名.py。
第八章 模块和包
• 源程序模块结构 • 模块的定义与使用 • Python中的包 • 引用其他模块 • 日期时间函数 • 测试及打包
参考书目《Python 程序设计》
目录
• 源程序模块结构 • 模块的定义与使用 • Python中的包 • 引用其他模块 • 日期时间函数 • 测试及打包
这里说明 图片内容
发生这样的错误时,解析器会提示说无法访问请求的模块,可 能的原因是模块不在搜索路径里,从而导致了路径搜索的失败。
4模块搜索目录
模块的定义与使用
当使用import语句导入模块时,默认的查找顺序: ➢ 首先是在当前目录(即执行的Python脚本文件所在的目录)下查找; ➢ 其次到PYTHONPATH(环境变量)下的每个目录中查找; ➢ 最后到Python的默认安装目录下查找。
6绝对导入和相对导入
模块的定义与使用
1.绝对导入 在import语句或者from导入模块,模块名称最前面不是以.点开头的 绝对导入总是去搜索模块搜索路径中找 2.相对导入
➢ 只能在包内使用,且只能用在from语句中 ➢ 使用.点号,表示当前目录内 ➢ ..表示上一级目录 ➢ 不要在顶层模块中使用相对导入
3 使用from…import语句导入模块 模块的定义与使用
在使用import语句导入模块时,每执行一条import 语句都会创建一个新的命名空间(namespace,即记录 对象名字和对象之间对应关系的空间。目前Python的命 名空间大部分都是通过字典来实现的。其中,key是标 识符;value是具体对象。),并且在该命名空间中执行 与.py文件相关的所有语句。
相关文档
最新文档