模块
1.什么是模块
- 模块是对应于python源代码文件
- 模块是以**.py**为扩展名的python文件。
- python中的模块包括模块、第三方模块和用户自定义模块。
- 通过导入模块,可以使用该模块中的变量、函数和类等。
- 使用模块,可以将计算任务分解为大小合理 的子任务,并实现代码的重用功能。
2.模块的API
- 模块化程序设计的基本原则是先设计API(即模块提供的函数或类的功能 描述),然后实现API(即编写程序,实现模块函数或类),最后在客户 端中导入并使用这些函数或类。
- 通过内置函数help(),可以查看Python模块的API。
- API定义客户端和实现之间的契约。API是一个明确的规范,规定“实现” 的具体功能是什么 。
- API通常由两部分组成:
- 可用函数的签名的精确规范。
- 以及描述函数作 用的非正式自然语言描述。
- API一般使用表格的形式,描述模块中的变 量、函数和类。
- 当编写一个新模块时,建议先设计API,然后实现模块 。
3.模块设计的基本原则
- 先设计API,再实现模块。
- 控制模块的规模,只为客户端提供需要的函数。实现包含大量函数的模 块会导致模块的复杂性。
- 在模块中编写测试代码,并消除全局代码
- 使用私有函数实现不被外部客户端调用的模块函数。
- 通过文档提供模块帮助信息。
4.为什么使用模块
- 可以编写大规模的系统程序
- 控制程序的复杂度
- 实现代码重用
- 增强可维护性
5.如何使用模块
模块导入方法一
import 模块1,模块2,···
- 使用import一次可以导入多个模块,模块间用逗号分隔。
- 调用模块方式如下:
模块.方法()
模块导入方式二
from 模块名 import 方法/类/对象
- 用这个方法导入后,调用函数无需“模块名.”前缀,可直接使用。
>>>from random import randint
>>>randint(1,10)
2
-----也可以一次导入多个方法,用逗号隔开------
>>>from random import randint,random
>>>random()
0.9545396343447562
>>>randint(1,10)
2
模块导入方式三
from 模块名 import *
- 遵循方式二语句的格式,其中通配符“*”指代制定模块中的全部方法。
- 但若导入文件中存在与导入内容重名的方法、变量或类时,程序执行将会出错。所以方法二更为安全。
>>>from random import *
>>>randint(1,10)
4
>>>random()
0.6584572753461784
>>>randrange(0,10,2)
2
6.创建模块
- Python模块对应于包含Python代码的源文件(其扩展 名为.py),在文件中可以定义变量、函数和类。
- 在模块中,除了可以定义变量、函数和类之外,还可 以包含一般的语句,称之为主块(全局语句)。当运 行该模块,或导入该模块时,主块语句将依次执行。
- Python文件中的每个文件都可以做为一个模块存在,文件名即模块名。
7. 模块的搜索路径
>>>import sys
>>>sys.path #查询路径,临时的
['C:\\Users\\Dell\\Jupy笔记',
'C:\\Users\\Dell\\Anaconda3\\python37.zip',
'C:\\Users\\Dell\\Anaconda3\\DLLs',
'C:\\Users\\Dell\\Anaconda3\\lib',
'C:\\Users\\Dell\\Anaconda3',
'',
'C:\\Users\\Dell\\Anaconda3\\lib\\site-packages',
'C:\\Users\\Dell\\Anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\Dell\\Anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\Dell\\Anaconda3\\lib\\site-packages\\Pythonwin',
'C:\\Users\\Dell\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\Dell\\.ipython']
- sys模块的sys.path属性返回一个路径列表 。
- 使用import语句导入模块时,系统自动从该列表的路径中搜索 模块,如果没有找到,则程序报错。
添加路径:
>>>sys.path.append(路径) #添加路径
8.模块的导入顺序
- 导入模块时,解释器按下列目录搜索路径和文件搜索顺序 查找并导入文件。目录搜索路径为:
- (1)当前目录。启动交互式Python的目录,或Python主 程序位于的目录。
- (2)操作系统环境变量PYTHONPATH中指定的目录。
- (3)Python标准库目录。