[TOC]
<br>
### python中的模块
python被称为一种胶水语言,开源众多的实用模块,是python广受欢迎的原因之一,毕竟我们大多开发者都是语言的运用者而不是创造者,对于我们普通开发者,重复的造轮子并不是一种可取的方式,有现成的模块,直接运用,主要在处理我们的业务逻辑,岂不快哉!
>[info] 从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入。
>
>那些一个或多个.py文件组成的代码集合就称为模块。如:os 是系统相关的模块;file是文件操作相关的模块
>
**模块分为三种**:
- 内置标准模块(标准库)
- 开源模块
- 自定义模块
#### 内置标准模块
顾名思义,安装python时,就已经帮我们安装上这些模块了,这些模块是python内置的基础模块。常用的标准库,主要有:
操作系统模块:`os`
命令行参数模块:`sys`
字符串正则模块:`re`
数学模块:`math`,`random`
时间模块:`datetime`,`time`
序列化模块:`json`,`pickle`,`shelve`
加解密模块:`hashlib`
网络模块:`urllib.request`, `smtplib`
进程模块:`subprocess`
日志模块:`logging`
文件通配符模块:`glob`
数据压缩模块:`zlib`,`gzip`,`bz2`,`zipfile`,`tarfile`
性能度量模块:`timeit`
...
这些模块,后面会有专门的一篇文章介绍常用的使用,这里主要目的是告诉我们,这些模块可以直接使用,不需要额外去安装。
这些模块不妨可以去python安装目录下的**Lib文件夹**下面去找找看?参考我的内置模块目录是:*D:\Python36\Lib*
#### 开源(第三方)模块
在python的开源模块管理上,存在着一个叫PyPI(Python Package Index)的仓库,开发者可以将自行封装好的模块发布到仓库上,实现代码开源共享。如果您开发出什么好用的模块,您也可以发布上去,让其他人安装使用哦!
PyPI官网:[https://pypi.org/](https://pypi.org/)
![](https://box.kancloud.cn/8d13a07b963622f95aa8f11e92e368d3_870x412.jpg)
#####安装第三方模块
######从PyPI中安装第三方模块
开源模块被发布到了PyPI仓库后,便可以通过命令pip进行模块的安装了。
这里已后面课程中重点介绍的`requests`模块为例,了解第三方模块安装与卸载
**安装requests模块的最新版本**
```cmd
pip install requests
```
**安装requests模块的指定版本**
```cmd
pip install requests==2.18.4
```
**升级requests模块**
```cmd
pip install --upgrade requests
```
**查看requests模块信息**
```cmd
pip show requests
```
**通过requirements.txt文件批量安装依赖模块**
如果您仔细去留意github上一些优秀的项目,在根目录中都会存在一个名字叫`requirements.txt`的文件,这个文件中会列出当前项目需要依赖的第三方模块,使用者直接通过这个文件,一次性安装所有依赖模块
```cmd
pip install -r requirements.txt
```
###### 从源码中安装第三方模块
1. 下载源码
2. 解压源码
3. 进入目录
4. 编译源码 `python setup.py build`
5. 安装源码 `python setup.py install`
##### 列出所有已安装第三方模块
```cmd
pip list
```
##### 卸载第三方模块
**卸载requests模块**
```cmd
pip uninstall requests
```
#### 自定义模块
一个或多个.py文件组成的代码集合,便是一个模块。
这里,已一个小实例讲解,请耐心阅读。定义的目录结构如下:
```
└─module_test
│ m1.py
│ test.py
│
└─m2
m2_chat.py
m2_shopping.py
__init__.py
```
`m1.py` 代码
```python
def say_hello(name=None):
return "Hello:%s" % name
```
`m2_chat.py`代码
```python
def chat(_from, _to, message):
print "%s tell %s something about %s" % (_from, _to, message)
```
`m2_shopping`代码
```python
def shopping(sb, something):
print "%s is buying %s" % (sb, something)
```
`m2/__init__.py`代码
```python
from m2_shopping import *
```
`test.py`代码
```python
import m1
import m2
from m1 import say_hello
from m2.m2_chat import chat
print m1.say_hello("Milton")
m2.shopping("Milton", "dog")
print say_hello("Milton")
chat("Milton", "Cherish", "Love")
```
**运行`test.py`输出结果:**
```cmd
Hello:Milton
Hello:Milton
Milton tell Cherish something about Love
Milton is buying dog
```
如上,m1 m2都可认为是一个模块,m1模块由一个m1.py文件组成,m2模块由m2_chat.py,m2_shopping.py,\__init__.py 三个文件组成。
### 导入模块
>导入一个模块的方式有:
>- `import` \<module_name> 导入一个模块,可通过module_name.\<function_name>引用模块中的属性。
>
>- `from` \<module_name> `import` \<function_name>,从一个模块中导入具体某个属性,可直接使用function_name
以前面自定义模块为例,在 `test.py` 中:
`import m1` 后,可以运行 m1.say_hello("Milton"),通过m1.xx 可以运行 `m1.py `中定义的函数或属性;
`import m2` 后,(注意,m2目录下的\__init__.py 中,声明了 from m2_shopping import *),此时m2可以直接引用m2目录下的m2_shopping 中的所有函数或属性,如m2.shopping("Milton","dog")
`from m1 import say_hello` 后,在当前名称空间可以直接使用say_hello,如 say_hello("Milton").
`from m2.m2_chat import chat` 后,可以在当前名称空间直接使用chat,如chat("Milton","Cherish","Love")
### 发布自己开发的模块
<略,自行百度吧,小编自己都还没发布过开源模块呢!>
<hr style="margin-top:100px">
:-: ![](https://box.kancloud.cn/2ff0bc02ec938fef8b6dd7b7f16ee11d_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
- 前言
- chapter01_开发环境
- chapter02_字符串的使用
- chapter03_列表的使用
- chapter04_字典的使用
- chapter05_数字的使用
- chapter06_元组的使用
- chapter07_集合的使用
- chapter08_输入输出
- chapter09_控制流程
- chapter10_实例练习_登录1
- chapter11_python函数入门
- chapter12_python中的类
- chapter13_轻松玩转python中的模块管理
- chapter14_掌握学习新模块的技巧
- chapter15_通过os模块与操作系统交互
- chapter16_子进程相关模块(subprocess)
- chapter17_时间相关模块(time & datetime)
- chapter18_序列化模块(json)
- chapter19_加密模块(hashlib)
- chapter20_文件的读与写
- chapter21_阶段考核2_登录
- chapter22_小小算法挑战(排序&二分法)
- chapter23_用多线程来搞事!
- chapter24_HTTP接口请求(requests)
- chapter25_接口测试框架(pytest)
- chapter26_阶段考核3_HTTP接口测试
- chapter27_HTML解析(pyquery)
- chapter28_阶段考核4_爬虫下载网易汽车
- chapter29_python中的那些编码坑
- chapter30_MySQL数据库操作
- chapter31 高级特性_迭代器与生成器
- chapter32 高级特性_装饰器
- chapter33 高级特性_列表处理