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. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…...
掌握Vibe Kanban会话管理:高效管理AI编码代理对话历史的终极指南
掌握Vibe Kanban会话管理:高效管理AI编码代理对话历史的终极指南 【免费下载链接】vibe-kanban Get 10X more out of Claude Code, Codex or any coding agent 项目地址: https://gitcode.com/GitHub_Trending/vi/vibe-kanban 在AI驱动开发的时代,…...
内网穿透技术解析:安全远程访问部署于内网的CYBER-VISION零号协议服务
内网穿透技术解析:安全远程访问部署于内网的AI模型服务 想象一下这个场景:你的团队费了九牛二虎之力,终于在一台内网服务器上部署好了一套强大的AI模型服务,比如一个能自动生成设计图的图像生成模型,或者一个能理解复…...
如何优化AutoTrain Advanced多模态模型部署:模型拆分与推理加速完整指南
如何优化AutoTrain Advanced多模态模型部署:模型拆分与推理加速完整指南 【免费下载链接】autotrain-advanced 🤗 AutoTrain Advanced 项目地址: https://gitcode.com/gh_mirrors/au/autotrain-advanced AutoTrain Advanced是一款功能强大的多模态…...
从平面到空间:Depth-Anything-3如何为视觉模型注入“空间感知”超能力
1. 当视觉模型突然学会"看空间"会发生什么? 想象一下你家的扫地机器人突然能像人类一样理解房间的立体结构——它不再撞到桌腿,能准确判断沙发底下能不能钻进去,甚至记得你昨天挪动的茶几位置。这就是Depth-Anything-3(…...
AI预测晚期肠癌患者对NHS新药的治疗反应
英国癌症研究所与都柏林RCSI医学与健康科学大学的研究人员联合开发了一种基于AI的新方法,可用于预测晚期肠癌患者对一种NHS近期批准使用的新药的反应情况。此举旨在帮助数千名患者避免接受对其病情无效的治疗。仅在英国,每年确诊的晚期肠癌病例接近1万例…...
AgentRun:当 Serverless 与 AI Agent 结合,如何颠覆传统的舆情分析模式
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
网络工程革新:大数据技术对网络工程的深度影响与变革(超详细解析)
网络工程革新:大数据技术对网络工程的深度影响与变革(超详细解析)前言一、大数据技术:核心概念1.1 定义1.2 网络工程中的大数据来源二、大数据技术:对网络工程的五大核心影响2.1 网络监控:从“单点看状态”…...
AI 记忆系统选型指南:Graphify 与 MemPalace 的技术路线之争
导读 当 AI 助手开始"失忆",我们需要的不只是更大的上下文窗口,而是更聪明的记忆方式。 一、AI 时代的记忆危机 你有没有遇到过这种情况? 和 Claude Code 聊了 50 轮,它突然"忘记"了项目架构。 Cursor 在处…...
2026奇点智能技术大会前瞻:为什么92%的搜索产品将在18个月内被淘汰?(AIAgent替代路径白皮书)
第一章:2026奇点智能技术大会:AIAgent智能搜索 2026奇点智能技术大会(https://ml-summit.org) 核心能力演进 AIAgent智能搜索在2026大会上首次公开全栈式语义理解架构,支持跨模态上下文延续、多跳推理与自主工具调用。相比传统关键词匹配引…...
Volo gRPC-Web支持:让浏览器直接调用gRPC服务
Volo gRPC-Web支持:让浏览器直接调用gRPC服务 【免费下载链接】volo Rust RPC framework with high-performance and strong-extensibility for building micro-services. 项目地址: https://gitcode.com/gh_mirrors/vo/volo Volo是一个基于Rust的高性能、强…...
