知识内容:
1.模块的定义与分类
2.模块的导入
3.模块与包
一、模块的定义与分类
1.什么是模块
模块就是实现了某个功能的代码集合,模块是由一大堆代码构成的
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;re是处理正则表达式相关的模块
2.模块的分类
模块可以分为三种:
- 自定义模块
- 内置标准模块(又称标准库)
- 开源模块
自定义模块 和开源模块的使用参考 http://www.cnblogs.com/wupeiqi/articles/4963027.html
二、模块的导入
1.3种导入模块的方式:
- import 模块名 [ as 别名] 使用这种方式导入模块后如要使用模块中的对象可以使用以下方法: 模块名(别名).对象名
- from 模块名 import 对象名[ as 别名]
- 导入一个模块中的所有对象: from 模块名 import *
注: 不推荐使用最后一种
2.导入模块的顺序
(1) 导入python标准库中的模块(python环境自带模块),比如说os\sys\re\math
(2) 导入第三方库模块,比如说numpy\scrapy
(3) 导入自己定义或者开发的本地模块
示例:
1 # __author__ = "wyb"
2 # date: 2018/3/9
3
4 import os # 导入python自带模块os
5 import sys # 导入python自带模块sys
6 import requests # 导入python第3方模块requests
7 # import package # 导入自己写的模块package
8
9 from bs4 import BeautifulSoup # 从bs4包中导入BeautifulSoup模块
10 from math import sqrt # 从math模块中导入sqrt函数
三、模块与包
1.使用模块的好处
- 大大提高代码的可维护性
- 提高代码复用性
注:
使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
2.什么是包
你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package),如下所示:
注: 每一个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。
__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块。
自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys
模块,自己的模块就不可命名为sys.py
,否则将无法导入系统自带的sys
模块