多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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测试开发圈”,了解更多测试教程!***