本节大纲:
1.模块介绍
2.time&datetime
3.random.
4.os
5.sys
6.shutil
7.json&picle
8.shelve
9.xml处理
10.yaml处理
11.configparser
12.hashlib
13.subprocess
14.logging模块
15.re正则表达式
模块的定义:用一堆代码实现了某个功能的代码集合
类似与函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合,而对于一个复杂的功能来说,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块
如:os是系统相关的模块,file是文件操作相关的模块
模块分为三种:
自定义模块
内置模块
开源模块(第三方模块)
自定义模块
1.定义模块
情景一
情景二
2.导入模块
在python中,要想使用模块,需要先导入,导入模块有以下几种方式:
如要导入一个名为module的模块
1 import module 2 from module.xx.xx import xx 3 from module.xx.xx import xx as rename 4 from module.xx.xx import *#*号这种导入模式会导入一个模块中的所有项目,这种方法虽然很简单,便利,但是不推荐使用,#因为引入的其他来源的命令,很可能覆盖了已有的定义,存在一定的安全隐患
导入模块其实就是在告诉Python解释器去解释那个py文件
如果导入的是一个py文件,解释器就解释该py文件
如果导入的是一个包,解释器就解释该包下的__init__.py文件
Python中,导入模块时是根据那个路径作为基准来进行的呢?
可通过sys模块中的sys.path来查看
import sys print(sys.path) #[‘D:\\PycharmProjects\\fullstack\\homework_oneday\\module\\module_file‘, ‘D:\\PycharmProjects\\fullstack‘, ‘C:\\Program Files\\Python35\\python35.zip‘, ‘C:\\Program Files\\Python35\\DLLs‘, ‘C:\\Program Files\\Python35\\lib‘, ‘C:\\Program Files\\Python35‘, ‘C:\\Program Files\\Python35\\lib\\site-packages‘]
如果sys.path路径列表中没有你想要的路径,可以通过sys.path.append(‘路径‘)添加
通过os模块可以获取各种目录
import sys import os pre_path = os.path.abspath(‘../‘) sys.path.append(pre_path)
包(package)的概念
我们先设想一下,如果不同的人编写的模块名相同怎么办?为了避免冲突,Python又引进了按目录
来组织模块的方法,称为包(package)。
假设,如下图,我的两个time_file.py模块名字重名了,但是这两个模块的功能都不相同,如果这两个模块都在同一级目录中,那么我在其他地方要调用这个time_file.py模块,那么这个时候就会发生冲突,在这里我们就可以通过包来组织模块,避免冲突,
方法是:选择一个顶层包名,引入包以后,只要顶层的包名不与别人冲突,那这个包里面的模块都不会与别人冲突了。
请注意:每个包目录下来都会有一个__init__.py的文件,这个文件必须是存在的,否则,Python就不把这个目录当成普通目录,而不是一个包,__init__.py可以是空文件,也可以有python代码,__init__.py本身就是一个文件,它的模块命就是对应的包名,它一般由于做接口文件