预备小菜:Python入门之模块和库

2023-02-24 18:50:04 浏览数 (1)

在Python交互模式下,虽然可以能立即得到结果,但是不能保存。如果编写一个代码长的程序通常都是在IDE中编写完成一个文件后再运行。但是随着代码越来越多,为了方便代码的维护和健壮性,我们通常按照功能拆分成几个文件。这样也方便在不同的程序中使用同样的一个函数。Python 把各个函数定义存入一个文件,在脚本或解释器的交互式程序中使用,这就是模块。

再将众多具有相关功能的模块文件结构化组合形成包,具有相关功能模块和包的集合就是库。这也是Python的一大特色,因为它具有强大的标准库、第三方库和自定义模块。这些库和模块提供丰富的功能,包括后续学习到的NumPy和Pandas.

模块

我们可以先来自定义一个模块,来看下模块是如何提供功能的。首先编写一个hello.py文件。

代码语言:javascript复制
# myList函数,返回一个0-4的列表
def myList():
    list = []
    for i in range(5):
        list.append(i)
    return list

然后在编写一个main.py文件,内容如下:

代码语言:javascript复制
#导入hello模块
import hello
list = hello.myList()
print(list)
#代码结果:
[0, 1, 2, 3, 4]

在上面的示例中就是说明hello模块提供了一个myList()的功能,我们是在使用的时候,通过import相关的模块名字就可以直接使用这里面编写好的功能,说白了,这也是封装,或者说在Python中有很多提供好的轮子供我们直接使用,可以大大提高开发的效率。

在使用模块的时候,我们使用 import 语句来引入模块。有时候也会遇见这样的写法:from module_name import class_name这个语句表示并不会把module_name(模块名称)中的所有的内容都导入,而是只导入class_name的内容。除此还可以这样写:from module_name import *,表示导入module_name目录下的所有内容。

那么这三种写法有什么区别和不同呢?我们用个实例看下,代码实现json字符串转成字典对象,在将对象转成字符串,用到json库中的模块。

1.import导入

代码语言:javascript复制
#导入json
import json
str = """{"firstName": "Bill","lastName": "Gates"}"""
jsonObject = json.loads(str)
print(jsonObject)
jsonStr = json.dumps(jsonObject)
print(jsonStr)

2.from … import … 导入

代码语言:javascript复制
from json import loads
from json import dumps
str = """{"firstName": "Bill","lastName": "Gates"}"""
jsonObject = loads(str)
print(jsonObject)
jsonStr = dumps(jsonObject)
print(jsonStr)

3.from … import * 导入

代码语言:javascript复制
from json import *
str = """{"firstName": "Bill","lastName": "Gates"}"""
jsonObject = loads(str)
print(jsonObject)
jsonStr = dumps(jsonObject)
print(jsonStr)

上述的代码的结果都是:

代码语言:javascript复制
{'firstName': 'Bill', 'lastName': 'Gates'}
{"firstName": "Bill", "lastName": "Gates"}

可以看到,如果使用方法1,那么在代码中使用模块内容的时候,需要加json模块名,如果是使用方法2导入,那么可以直接使用类名调用,不需要加模块名。而方法3是直接是导入模块所有的类,使用时也不需要包含模块名。但是这种写法容易出现类名与文件名重名的问题,而引发类指代不明错误,所以并不推荐使用。

标准库

标准库是Python安装时自带的库,之前提到过,库可以认为是很多模块的集合,当Python安装完成后,就可以直接使用的库。Python 标准库是非常丰富的,组件涉及的范围也很广泛。很多的内置模块都是用C语言编写,我们可以使用这些库来完成系统级别的功能,比如常用的文件 I/O模块。下表是常用的Python标准库和功能介绍。

库名称

功能简介

os

对目录的新建、删除、权限修改、切换路径,调用执行系统命令

sys

提供对解释器相关的操作

json

Python对象与Json对象的转换

re

正则表达式,用于文本和字符串的处理

string

字符串处理库,字符串查找、分割、组合、替换、去重等处理

base64

将二进制字符串编码和解码为字符串的Base16,Base32和Base64

math

数学函数库

decimal

10进制浮点运算

random

实现各种分布的伪随机数生成器

datetime

对日期和时间的处理

zlib、gzip

压缩和解压缩文件

sqlite3、redis

对sqlite3数据库和redis数据库的操作

urllib、urllib2

读取特定URL并获得返回的信息,urllib2增加HTTP信息的处理

HTMLParser

Python自带的HTML解析模块

第三方库

上面介绍了标准库,那么第三方库就更容易理解,不是Python自带的,由其他公司或者组织开发的公开的库(模块),就是第三方库。既然是在Python中使用,也是遵循着Python的语言规范,使用方法跟标准库并没有什么两样。在数据分析中最常用的NumPy和Pandas是第三方库比较有代表性的,使用非常广泛,在下面表中,介绍了一些常用到的第三方库,在后面的学习中会先后的遇到,当时详细介绍功能,这里先做熟悉和了解。

分类

库名称

功能简介

数据分析及可视化

numpy

Python科学计算的基础工具包

pandas

Python数据分析的库,主要用于数据分析

Matplotlib

2D绘图库,通常用于数据可视化图表制作

pyecharts

基于百度Echarts的强大的可视化工具库

Pillow

Python图形库(Python Imaging Library )的分支,作图人员必备库之一

Plotly

提供的图形库可以进行在线WEB交互,并提供具有出版品质的图形

jieba

结巴分词是国内流行的Python文本处理工具包,可以实现分词、词典管理、关键字抽取、词性标注等

wordcloud

词云生成器

机器学习

Scikit-Learn

Python的机器学习综合库,内置监督式学习和非监督式学习机器学习方法,包括各种主流算法。

TensorFlow

谷歌的第二代机器学习系统,内建深度学习的扩展支持

PyTorch

FaceBook推出的深度学习框架,提供动态计算图

数据库

pymysql

MySQL连接库

pymongo

MongoDB连接库

自动化

openpyxl

用于Excel文件读写

pyPDF2

用于PDF文件读写

python-docx

用于Word文件读写

Selenium

模拟人操作浏览器网页,可以实现自动化,测试等

字符解析

lxml

xml和html读取和解析

xpath

xml和html对象解析和格式化处理

BeautifulSoup

xml和html的解析库,常用于爬虫的数据收集

网络爬虫

requests

网络请求库,提供多种网络请求方法、支持定义发送信息

Crawley

快速爬取对应网站的内容,数据可以导出为JSON、XML

newspaper

新闻类的文章以及内容分析

Scrapy

功能强大的爬虫框架

Web框架

Django

Python生态中最流行的开源Web应用框架,采用模型、模板和视图的编写模式。

Flask

轻量级Web应用框架,几行代码即可建立一个小型网站因为核心简单,实现功能需配合其他三方库使用

第三方库可远远不止这些,Python库的范围包括项目构建、文件处理、图像处理、音视频工具、数据库、web框架等方方面面。上面列举的这些仅仅是冰山一角,Python也成为了最受欢迎的语言之一的原因也是功能众多的第三方库,为了程序开发者提供了极大的

0 人点赞