Python基础:标准库概览

1. 标准库介绍
Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。
Windows 版本的 Python 安装程序通常包含整个标准库,往往还包含许多额外组件。对于类 Unix 操作系统,Python 通常会分成一系列的软件包,因此可能需要使用操作系统所提供的包管理工具来获取部分或全部可选组件。
在标准库以外,还存在成千上万并且不断增加的其他组件集(从单独的程序和模块到软件包以及完整的应用程序开发框架),这些组件集可以从Python 包索引 https://pypi.org 获取。
2. 常见的一些标准库
下面的表格罗列了一些常用的模块,但还只是标准库的很少的一部分,具体使用需要根据需求来定。
| 模块名称 | 描述 | 功能和示例 |
|---|---|---|
math | 数学运算函数 | 提供基本的数学运算,如三角函数、对数等。例如:math.sin(90) 返回正弦值 1.0。 |
random | 生成伪随机数 | 生成随机数,可用于模拟随机事件。例如:random.randint(1, 10) 生成1到10之间的随机整数。 |
os | 操作系统功能 | 提供与操作系统交互的功能,如文件和目录操作。例如:os.listdir('.') 返回当前目录下的文件列表。 |
sys | 提供 Python 解释器的变量和函数 | 提供访问和操作 Python 解释器的变量和功能。例如:sys.argv 包含命令行参数的列表。 |
datetime | 处理日期和时间 | 提供处理日期和时间的类和函数。例如:datetime.now() 返回当前日期和时间。 |
time | 处理时间和时间戳 | 提供处理时间和时间戳的函数。例如:time.sleep(2) 暂停程序执行 2 秒。 |
calendar | 处理日期和时间的日历函数 | 提供处理日期和时间的日历功能。例如:calendar.isleap(2023) 判断2023年是否为闰年。 |
collections | 高性能容器数据类型 | 提供额外的数据类型,如命名元组、计数器等。例如:collections.Counter([1, 2, 1, 3, 2, 4]) 统计元素出现次数。 |
itertools | 提供用于操作迭代器的函数 | 提供迭代器操作的工具函数。例如:itertools.product('AB', repeat=2) 返回笛卡尔积。 |
json | 处理 JSON 数据格式 | 提供 JSON 数据的编码和解码功能。例如:json.dumps({"name": "John", "age": 30}, indent=2) 将字典转换为美观的 JSON 字符串。 |
re | 正则表达式操作 | 提供正则表达式的功能,用于模式匹配。例如:re.search(r'\d+', 'Age: 30') 匹配字符串中的数字。 |
urllib | 处理 URL | 提供处理 URL 的模块,包括打开、读取、解析 URL。例如:urllib.request.urlopen('https://www.example.com') 打开一个 URL。 |
http | 提供基本的 HTTP 服务器和客户端功能 | 提供创建简单 HTTP 服务器和客户端的功能。例如:http.server.SimpleHTTPRequestHandler 创建一个简单的 HTTP 服务器。 |
socket | 提供套接字编程的接口 | 提供网络编程的功能,包括创建套接字、发送和接收数据。例如:创建一个服务器套接字。 |
email | 处理电子邮件 | 提供创建和解析电子邮件的功能。例如:创建一个简单的文本邮件。 |
sqlite3 | SQLite 数据库接口 | 提供与 SQLite 数据库交互的功能。例如:连接到数据库、执行 SQL 查询。 |
csv | 处理 CSV 文件格式 | 提供读写 CSV 文件的功能。例如:读取和写入 CSV 文件。 |
xml | 处理 XML 数据 | 提供处理 XML 数据的功能。例如:解析和生成 XML 文件。 |
tkinter | GUI 编程工具包 | 提供创建图形用户界面的功能。例如:创建一个简单的窗口和按钮。 |
threading | 多线程编程 | 提供创建和管理线程的功能。例如:创建一个简单的线程。 |
multiprocessing | 多进程编程 | 提供创建和管理进程的功能。例如:创建一个简单的子进程。 |
subprocess | 启动和控制子进程 | 提供启动和控制子进程的功能。例如:执行外部命令。 |
logging | 日志记录工具 | 提供记录日志的功能。例如:配置日志记录器并记录消息。 |
unittest | 单元测试框架 | 提供单元测试的功能。例如:编写和运行测试用例。 |
doctest | 用于测试文档中的示例代码 | 提供从文档字符串中提取和运行测试的功能。例如:在文档中编写测试用例。 |
argparse | 命令行参数解析 | 提供解析命令行参数的功能。例如:定义和解析命令行参数。 |
pickle | 对象序列化和反序列化 | 提供将 Python 对象转换为字节流的功能。例如:将对象保存到文件和从文件加载。 |
shutil | 文件操作工具 | 提供对文件和目录进行高级操作的功能。例如:复制、移动文件和目录。 |
gzip | 支持对 GZIP 格式的文件进行压缩和解压缩 | 提供对 GZIP 格式文件的压缩和解压缩功能。例如:压缩和解压缩文件。 |
tarfile | 处理 tar 文件格式 | 提供处理 tar 文件的功能。例如:创建和提取 tar 文件。 |
zipfile | 处理 ZIP 文件格式 | 提供处理 ZIP 文件的功能。例如:创建和提取 ZIP 文件。 |
3. 部分模块的示例
3.1 操作系统 - os
提供与操作系统交互的功能,包括文件和目录操作。
import os# 获取当前工作目录
current_directory = os.getcwd()
print("Current Directory:", current_directory)# 列出目录中的文件
files_in_directory = os.listdir(current_directory)
print("Files in Directory:", files_in_directory)# 创建目录
os.mkdir("example_directory")# 删除目录
os.rmdir("example_directory")
3.2 文件通配符 - glob
提供文件名的模式匹配功能。
import glob# 匹配当前目录下所有的 .txt 文件
txt_files = glob.glob('*.txt')
print(f"匹配的 .txt 文件:{txt_files}")
3.3 命令行参数 - sys 和 argparse
sys 提供对 Python 解释器的变量和函数的访问,而 argparse 用于解析命令行参数。
import sys
import argparse# 使用 sys 获取命令行参数
script_name = sys.argv[0]
print(f"脚本名称:{script_name}")# 使用 argparse 解析命令行参数
parser = argparse.ArgumentParser(description='描述脚本用途')
parser.add_argument('--input', help='输入文件路径')
args = parser.parse_args()
input_file = args.input
print(f"输入文件路径:{input_file}")
3.4 错误输出重定向和程序终止 - sys
import systry:# 模拟错误raise ValueError("这是一个错误")
except ValueError as e:# 将错误信息输出到标准错误流print(f"发生错误:{e}", file=sys.stderr)# 终止程序sys.exit(1)
3.5 字符串正则匹配 - re
提供正则表达式的功能,用于模式匹配。
更多关于Python正则匹配可以参考下面博文:
Python基础:正则表达式(regular expression)详解
import re# 匹配字符串中的数字
result = re.search(r'\d+', 'Age: 30')
if result:matched_number = result.group()print(f"匹配到的数字:{matched_number}")
3.6 数学 - math
提供数学运算函数
import math# 计算正弦值
sin_value = math.sin(math.radians(90))
print(f"正弦值:{sin_value}")
3.7 访问互联网 - urllib
提供处理 URL 的模块,包括打开、读取、解析 URL。
from urllib.request import urlopen# 打开并读取 URL 内容
with urlopen('https://www.example.com') as response:content = response.read().decode('utf-8')print(f"URL 内容:{content}")
3.8 日期和时间 - datetime
提供处理日期和时间的类和函数。
from datetime import datetime# 获取当前日期和时间
current_datetime = datetime.now()
print(f"当前日期和时间:{current_datetime}")
3.9 数据压缩 - gzip
提供对 GZIP 格式的文件进行压缩和解压缩功能。
import gzip# 压缩文件
with open('example.txt', 'rb') as file:with gzip.open('example.txt.gz', 'wb') as compressed_file:compressed_file.writelines(file)# 解压缩文件
with gzip.open('example.txt.gz', 'rb') as compressed_file:content = compressed_file.read().decode('utf-8')print(f"解压缩后的内容:{content}")
3.10 性能度量 - timeit
用于测试代码段的执行时间
import timeit# 测量代码执行时间
def example_function():result = sum(range(1000))execution_time = timeit.timeit(example_function, number=10000)
print(f"代码执行时间:{execution_time} 秒")
3.11 测试模块 - unittest
提供单元测试功能
import unittest# 编写测试用例
class ExampleTestCase(unittest.TestCase):def test_addition(self):self.assertEqual(1 + 1, 2)# 运行测试
if __name__ == '__main__':unittest.main()
4. 使用标准库注意事项
使用 Python 标准库是编写稳健、可维护和跨平台的 Python 代码的关键部分。
- 版本兼容性
不同版本的 Python 可能会引入新的模块或对现有模块进行更改。确保你的代码适用于你所使用的 Python 版本,查阅相应版本的官方文档。 - 异常处理
标准库中的函数和模块可能会引发异常。在使用它们时,确保进行适当的异常处理以防止程序崩溃。 - 文档查阅
Python 提供了详细的官方文档,其中包含对每个模块和函数的详细说明。在使用标准库的特定部分之前,请查阅相应的文档以了解其功能和用法。 - 模块导入
了解如何正确导入模块是重要的。有时候,你可能只需要导入模块的一部分而不是全部。例如,使用 from module import function 语法。 - 模块的性能
一些模块可能会影响程序的性能。在处理大量数据或需要高性能的情况下,考虑使用专门设计的库或工具。 - 可移植性
虽然标准库是 Python 的一部分,但并不是所有模块在所有平台上都是完全相同的。确保你的代码在目标平台上能够正确运行。 - 虚拟环境
在项目中使用虚拟环境是一个良好的实践,它可以确保你的项目在不同环境中具有相同的依赖关系。 - 第三方库
在某些情况下,可能有更好的第三方库可用,提供了比标准库更强大或更专业的功能。在选择使用标准库还是第三方库时,要根据具体需求和项目要求做出明智的选择。 - 更新和维护
定期检查 Python 的更新,并确保你的代码能够在最新版本的 Python 中运行。标准库中的一些模块可能会在后续版本中进行改进或修复 bug。 - 国际化
如果你的应用程序涉及到国际化和本地化,了解标准库中与这些方面相关的模块,如 locale 和 gettext。
5. 参考
官网:
https://docs.python.org/zh-cn/3/library/index.html
菜鸟教程:
https://www.runoob.com/python3/python3-stdlib.html

相关文章:
Python基础:标准库概览
1. 标准库介绍 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Pyt…...
C#,《小白学程序》第三课:类class,类的数组及类数组的排序
类class把数值与功能巧妙的进行了结合,是编程技术的主要进步。 下面的程序你可以确立 分数 与 姓名 之间关系,并排序。 1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /…...
建筑结构健康监测系统和传统人工监测的区别
在繁华的城市里,建筑结构作为城市生命线的重要一环,其安全与稳定对城市的运转和居民的生活至关重要。为了更好地守护建筑结构的健康,WITBEE万宾自主研发建筑结构健康监测系统让建筑安全,在上一个台阶。 WITBEE万宾建筑结构健康监测…...
二 使用GPIO的复用功能 利用USART 实现printf()
参考这篇: STM32串口通信详解 1. 关于USART USART ( universal synchronous / asynchronous receiver /transmitter) 是一种串行通讯协议 , 允许设备通过串行端口进行数据传输, USART 能够以同步或者异步的方式进行工作,在实际的运用中&…...
C#中的警告CS0120、CS0176、CS0183、CS0618、CS0649、CS8600、CS8601、CS8602、CS8604、CS8625及处理
目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前: 2. 解决后: 3.解决方法: 八、CS8604和CS8625 九、CS0649 十、CS8601 一、CS0120 严重性 代…...
js中声明变量的关键字(const,let,var)
const 特点: const不允许在同一作用域重复声明,块级作用域暂时性死区,在声明之前,该变量是不可用的const声明的是一个只读变量,声明之后不能改变其值,一旦声明必须初始化但是const定义的对象属性是可以修…...
Android13 launcher循环切页
launcher 常规切页:https://blog.csdn.net/a396604593/article/details/125305234 循环切页 我们知道,launcher切页是在packages\apps\Launcher3\src\com\android\launcher3\PagedView.java的onTouchEvent中实现的。 1、滑动限制 public boolean onT…...
Java学习路线第一篇:Java基础(2)
这篇则分享Java学习路线第一part:Java基础(2) 从看到这篇内容开始,你就是被选定的天命骚年,将承担起学完Java基础的使命,本使命为单向契约,你可选择YES或者选择YES。 具体路线安排:…...
网络工程师精华篇,50种网络故障及解决方法大集合
上午好,我的网工朋友。 做网络工程师,自然离不开网络,而日常工作中能搞多少大项目?最常见的其实还是网络故障的处理了。 怎么最高效地排查网络故障?怎么简单几招通网? 今天就从基础的入手,分…...
Unity播放网络视频
using System.Collections; using System.Collections.Generic; using UnityEngine; using Mx.UI; using Mx.Utils; using UnityEngine.UI; using UnityEngine.Video; /// <summary> 视频UI面板 </summary> public class VideoUIForm : BaseUIForm { private …...
SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测
SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-LSTM-selfAttention灰狼算法优化卷积长短…...
线性分类器--图像表示
整个模型 图像表示 二进制图像 灰度图像 彩色图像 大多数分类算法都要求输入向量! rbg的图像矩阵转列向量 大小为 32X32 的话,图像矩阵转列向量是多少维? 32x32x3 3072 维列向量...
车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)
车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…...
如何在Ubuntu的Linux系统中安装MySQL5.7数据库
前往MySQL数据库官网链接地址下载5.7数据库。 MySQL :: Download MySQL Community Server (Archived Versions)使用ssh的可视化工具将下载的mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz文件上传到Linux服务器,并解压文件 tar -zxvf mysql-5.7.40-linux-glibc2.12-x…...
基于Hadoop的区块链海量数据存储的设计与实现
点我完整下载:基于Hadoop的区块链海量数据存储的设计与实现.docx 基于Hadoop的区块链海量数据存储的设计与实现 Design and Implementation of Mass Data Storage for Blockchain based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研…...
运行时错误/缺陷到底是什么缺陷
运行时错误(Run-time Error)是一种跟程序运行状态相关的缺陷。这类缺陷不能通过直接禁用相关特性来屏蔽,而是需要通过分析变量的数值状态来发现可能的异常。简单来说,这些缺陷通常只有当程序执行起来以后,才能逐渐暴露出的缺陷,一…...
应用Web3.0的5种方法提升你的点击量
Web3.0早已成为互联网的全新方向标,为用户带来全新的手机上网感受。它也变成吸引住点击量疯涨的秘密武器。我们将要详细介绍Web3.0的五种使用方法,帮助你更好的了解并应用Web3.0技术性,以提升你的点击量。 1.可靠的身份认证Web3.0技术性提供了…...
计算机服务器中了mallox勒索病毒如何处理,mallox勒索病毒解密文件恢复
科技技术的发展推动了企业的生产运营,网络技术的不断应用,极大地方便了企业日常生产生活,但网络毕竟是一把双刃剑,网络安全威胁一直存在,近期,云天数据恢复中心接到很多企业的求助,企业的计算机…...
408—电子笔记分享
一、笔记下载 链接:https://pan.baidu.com/s/1bFz8IX6EkFMWTfY9ozvVpg?pwddeng 提取码:deng b站视频:408-计算机网络-笔记分享_哔哩哔哩_bilibili 包含了408四门科目(数据结构、操作系统、计算机组成原理、计算机网络)…...
【每日一题】子数组的最小值之和
文章目录 Tag题目来源题目解读解题思路方法一:贡献法单调栈 写在最后 Tag 【贡献法】【单调栈】【数组】【2023-11-27】 题目来源 907. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
