前言
学python真是太简单了,会玩积木,就会玩python。你可以把前面我们学习的函数,理解成我们做好的一块积木,而python语言本身就提供了大量模块给我们使用,一个模块包含了一系列的可用函数,你可以把它理解成某一主题(比如交通工具主题、家园建设主题、饮食主题等)积木包。
而且现在网络上还有很多很多人把他们用过的一些功能封装成了模块,也可供我们使用。通过使用别人提供的这些模块,我们不用重复造积木,只要会拼积木就行了。
一、python模块的调用
模块是一个包含某一相关功能函数的文件,扩展名是.py。可以使用import语句还导入模块。
接下来我们自定义一个计算模块,在计算模块中创建加法函数,然后在另一个模块中调用加法函数。
注意:创建模块时,模块名不要与python自带的标准模块库中的模块名相同。
示例一:引入自定义的“计算模块”中的加法函数
在使用import语句引入模块时,每执行一次都会创建一个新的命名空间(可以理解成临时存放外来功能的一个工具箱),然后在这个命名空间中执行模块的所有函数。而且执行时必须使用“模块名.函数”的方式调用。
如果觉得这种方式太麻烦,还可以使用“from...import语句”,这条语句表示从模块中导入一个指定的部分到当前的命名空间中。修改示例一的调用语法。
注意:如果需要使用某个模块中的很多函数,可以使用“ from 模块 import * ”的方式导入所有函数。
最后,如果有时我们自定义的模块中测试过一些函数,这些测试的代码不想让别的模块调用,可以使用__name__属性来实现效果。
二、python常用模块
在python中,自带了很多实用的模块,我们称为标准模块库,这些模块可以直接使用import语句导入来使用。
python使用模块索引:https://docs.python.org/zh-cn/3/py-modindex.html
2.1 sys模块
该模块提供了一些变量和函数。这些变量可能被解释器使用,也可能由解释器提供。
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit([arg])
sys.version 获取Python解释程序的版本信息
除此以外,还有更多的函数和属性请自行看官网的“模块索引页面”。
2.2 time模块
时间表现有两种形式,一种是时间戳(从1970.1.1开始按秒计算偏移量),一种是常见的“年.月.日 小时:分钟:秒”。
import time
time.time() # 时间戳
time.localtime() # 当前时间(元祖方式)
time.strftime(“%Y-%m-%d %X”) # 指定年月日方式
2.3 datetime模块
datatime模块重新封装了time模块,提供更多API(接口),还有更多的类,包括date类(纯日期),time(纯时间),datetime(日期和时间),timedelta(时间跨度),tzinfo(时区)。
datetime模块在后面会用得非常频繁,所以这儿就不展开讲解。后面示例中使用到对应功能,再具体解说。
2.4 hashlib加密模块
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
2.5math数学运算模块
python 提供的math数学运算模块,包含指数、对数、平方、开方、三角函数等运算方式。具体如下表
函数 | 说明 |
math.ceil(11.3) | 返回>=11.3的最小整数,值为12 |
math.floor(11.3) | 返回<=11.3的最小整数,值为11 |
math.exp(3) | 返回常量e的3次方,值为20.085536923187668 |
math.fabs(-12) | 返回-12的绝对值,值为12 |
math.factorial(5) | 返回5的阶乘(5*4*3*2*1),值为120 |
math.fmod(13,2) | 返回x/y的余数,值为1 |
math.pow(3,4) | 返回3的4次方,值为81 |
math.sqrt(9) | 返回9的平方根,值为3 |
还有很多就不一一列举,建议看帮助手册 |
2.6 random随机数模块
random用于生成随机数,常用方法有
random()生成0到1之间的浮点数;
uniform(x,y)生成x到y之间的浮点数,可以等于x和y;
randrange([start],n[,step])生成0到n之间的整数,可以等于0,不能等于n,如果有start和step,表示从start开始,步长为step;
randint(x,y)生成x到y之间的整数,可以等于x和y;
choice(序列)从序列中返回一个随机元素;
shuffle(序列)重新排列序列;
sample(序列,n)从序列中取n个不重复元素组成的队列;
还有很多很重要的模块,比如文件操作等,留到后面再详细介绍。
三、python第三方模块
库名 | 说明 |
urllib3 | 是一个python的HTTP客户端,大多数python生态系统已经使用urllib3,它主要补全了python标准库中缺少的许多关键功能: 线程安全;连接池;客户端SSL/TLS验证;使用分段编码上传文件;重试请求和处理HTTP重定向;支持gzip、deflate和brotli编码;HTTP和SOCKS的代理支持。 |
requests | 基于urllib3的一个用于发起HTTP请求的库,比urllib更快,使用更简单。 |
lxml | lxml是Python语言里处理XML和HTML的功能最丰富和最容易使用的库。它的主要优点是易于使用,在解析大型文档时速度非常快,并提供了简单的转换方法将数据转换为python数据类型,使用文件操作更容易。 |
BeautifulSoup4 | 用于从网页上抓取信息的库,它位于HTML解析器的顶部,用于迭代、搜索和修改解析树。与lxml相比,它是基于HTML文档的,能解析整个DOM树,所以性能低于lxml。 |
pymysql | 在python中操作mysql数据库的模块 |
pyinstaller | 将python程序打包成可执行exe文件 |
selenium | 是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它支持非常多的浏览器,如Chrome、Firefox等。 |
matplotlib | 是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图。一般可绘制折线图、散点图、柱状图、饼图、直方图、子图等等。 |
openpyxl | 用于处理xlsx格式的Excel文件 |
itchat | 是一个开源的微信个人号接口,使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。 |
wxpy | 微信机器人,在itchat基础上,通过大量接口优化提升了模块的易用性,并进行了丰富的功能扩展 |
jpush | 是极光推送的品牌简称,是一个对所有App个人开发者、企业开发者开放的,免费的消息推送服务。 |