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处理电子邮件提供创建和解析电子邮件的功能。例如:创建一个简单的文本邮件。
sqlite3SQLite 数据库接口提供与 SQLite 数据库交互的功能。例如:连接到数据库、执行 SQL 查询。
csv处理 CSV 文件格式提供读写 CSV 文件的功能。例如:读取和写入 CSV 文件。
xml处理 XML 数据提供处理 XML 数据的功能。例如:解析和生成 XML 文件。
tkinterGUI 编程工具包提供创建图形用户界面的功能。例如:创建一个简单的窗口和按钮。
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 代码的关键部分。

  1. 版本兼容性
      不同版本的 Python 可能会引入新的模块或对现有模块进行更改。确保你的代码适用于你所使用的 Python 版本,查阅相应版本的官方文档。
  2. 异常处理
      标准库中的函数和模块可能会引发异常。在使用它们时,确保进行适当的异常处理以防止程序崩溃。
  3. 文档查阅
      Python 提供了详细的官方文档,其中包含对每个模块和函数的详细说明。在使用标准库的特定部分之前,请查阅相应的文档以了解其功能和用法。
  4. 模块导入
      了解如何正确导入模块是重要的。有时候,你可能只需要导入模块的一部分而不是全部。例如,使用 from module import function 语法。
  5. 模块的性能
      一些模块可能会影响程序的性能。在处理大量数据或需要高性能的情况下,考虑使用专门设计的库或工具。
  6. 可移植性
      虽然标准库是 Python 的一部分,但并不是所有模块在所有平台上都是完全相同的。确保你的代码在目标平台上能够正确运行。
  7. 虚拟环境
      在项目中使用虚拟环境是一个良好的实践,它可以确保你的项目在不同环境中具有相同的依赖关系。
  8. 第三方库
      在某些情况下,可能有更好的第三方库可用,提供了比标准库更强大或更专业的功能。在选择使用标准库还是第三方库时,要根据具体需求和项目要求做出明智的选择。
  9. 更新和维护
      定期检查 Python 的更新,并确保你的代码能够在最新版本的 Python 中运行。标准库中的一些模块可能会在后续版本中进行改进或修复 bug。
  10. 国际化
      如果你的应用程序涉及到国际化和本地化,了解标准库中与这些方面相关的模块,如 locale 和 gettext。

5. 参考

  官网:
  https://docs.python.org/zh-cn/3/library/index.html
  菜鸟教程:
  https://www.runoob.com/python3/python3-stdlib.html
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录】算法训练计划35

贪心 1、860. 柠檬水找零 题目: 输入:bills [5,5,5,10,20] 输出:true 思路: 模拟大法 func lemonadeChange(bills []int) bool {//贪心,代码一刷, 感觉要用到hashmap,也不用five, ten : 0…

Jquery动画特效

1&#xff0c;Jquery提供的特效方法 2&#xff0c;实例代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

HTTP2

HTTP 确认访问用户身份的认证 某些Web页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。 何为认证 计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无法确认网络的那头究竟有谁。可见,为了弄清究竟是谁在访问服务器,就…

记录:Unity脚本的编写8.0

目录 需求分析设计GUI包含账号和密码输入栏&#xff0c;包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo&#xff0c;登录和注册的实现&#xff08;包括GUI和数据库操控&#xff09; 需求分析 自行设计GUI&#xff0c;要求 1.包…

二叉树的最近公共祖先(C++实现)

二叉树的最近公共祖先 题目思路代码&#xff08;详细注释&#xff09; 题目 二叉树的最近公共祖先 思路 我们可以通过两个栈来实现 实现一个FindPath函数&#xff0c;用来查找从根节点到目标节点的路径&#xff08;路径可以用栈来保存&#xff09; 路径保存好后&#xff0c;…

7.Spring源码解析-parseBeanDefinitions解析beanDefinitions

默认解析的命名空间由parseDefaultElement方法去处理&#xff0c;即import, alias, bean, 嵌套的beans四种元素 import 写法示例: <import resource"CTIContext.xml" /> <import resource"customerContext.xml" /> importBeanDefinitionRe…

[⑥ADRV902x]: 软件系统初始化流程学习

前言 本篇博客主要记录ADRV902x参考软件中对ADRV902x系统的初始化流程&#xff0c;使用API函数来实现transceiver的配置&#xff0c;校准和控制等。官方将整个系统初始化称之为multichip synchronization initialization (MCS) sequence&#xff0c;主要分成PreMcsInit&#x…

从三个角度分析共享办公对工作效率的影响

在现代社会&#xff0c;共享办公的概念越来越受到人们的关注和欢迎。共享办公&#xff0c;顾名思义&#xff0c;就是多个公司或个体在同一办公空间内进行工作。那么&#xff0c;共享办公是否能提高工作效率呢&#xff1f;这个问题并没有一个确定的答案&#xff0c;因为它取决于…

前端页面带值跳转

前端页面带值跳转 querry>url searchParamers,url后附加参数&#xff0c;传递的值长度与有限vuex&#xff08;全局状态管理&#xff09;&#xff0c;搜索页面将关键词塞到状态中&#xff0c;所搜结果页从状态取值。 使用axios整合前后端 axios官网&#xff1a;axios 在前…

计网Lesson3 - 计算机网络评价指标与封包解包

文章目录 计算机网络的性能指标1. 速率2. 带宽3. 吞吐量4. 时延5. 时延带宽积6. 往返时间7. 利用率8. 数据的解包和封包 计算机网络的术语实体![实体](https://img-blog.csdnimg.cn/direct/cbf4ca9ed5ab4df290b5a17b4642c6a1.png)协议服务 计算机网络的性能指标 1. 速率 数据…

中伟视界:AI智能分析盒子的人数统计AI算法通过什么算法模型可以解决重复统计的问题?

在AI盒子的人数统计中&#xff0c;常常会遇到重复统计的问题。当有多人同时出入视野范围时&#xff0c;传统的算法模型很难准确识别和计算人数&#xff0c;容易导致重复统计。为解决这一难题&#xff0c;AI算法模型可以采用多种方法来提高准确性并避免重复统计。 一种常用的解决…

windows dockerdesktop 安装sqlserver2022

1.下载windows dockertop软件 下载连接 2.安装完成配置&#xff0c;下载源地址 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": …

npm管理发布包-创建与发布

创建与发布 我们可以将自己开发的工具包发布到 npm 服务上&#xff0c;方便自己和其他开发者使用&#xff0c;操作步骤如下 创建文件夹&#xff0c;并创建文件indexjs&#xff0c;在文件中声明函数&#xff0c;使用 module.exports 暴露npm初始化工具包&#xff0c;package.j…

★数据库建表优化

1、冷热分离&#xff1a; 一个表里最好不要存在即有常修改的数据又有不常修改的数据&#xff0c;一个好的做法是&#xff0c;把常修改更新的字段当做热表单独建表&#xff0c;同理不经常修改更新的字段当做冷表单独建表。 2、控制B树的高度&#xff1a; 也就是控制一个表存储的…

【Spark入门】基础入门

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍Spark的定义、发展、扩展阅读&#xff1a;Spark VS Hadoop、四大特点、框架模块、运行模式、架构角色。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff…

AWVS 使用方法归纳

1.首先确认扫描的网站&#xff0c;以本地的dvwa为例 2.在awvs中添加目标 输入的地址可以是域名也可以是ip&#xff0c;只要本机可以在浏览器访问的域名或ip即可 添加地址及描述之后&#xff0c;点击保存&#xff0c;就会展现出目标设置选项 business criticality译为业务关键…

1.Spring源码解析-ClassPathXmlApplicationContext

此类是读取spring的xml配置文件并解析。也是源码入口之一。 我们调试即将开始。 传递给父类设置值 经调试我们得到是给AbstractApplicationContext设置默认的应用上下文父级的值&#xff0c;很明显是空 给父类AbstractRefreshableConfigApplicationContext设置属性 刷新容器…

C++STL库常用详解与原理

CSTL库 学习方法&#xff1a;使用STL的三个境界&#xff1a;能用&#xff0c;明理&#xff0c;能扩展。 常用库 库名称所需头文件数据结构string#include<string>串vector#include<vector>动态数组list#include<list>带头双向循环链表queue#include<queu…

极客大挑战2023 Web方向题解wp 全

最后排名 9/2049。 玩脱了&#xff0c;以为28结束&#xff0c;囤的一些flag没交上去。我真该死啊QAQ EzHttp 前言&#xff1a;这次极客平台太安全了谷歌不给抓包&#xff0c;抓包用burp自带浏览器。 密码查看源码->robots.txt->o2takuXX’s_username_and_password.txt获…

VAE模型及pytorch实现

VAE模型及pytorch实现 VAE模型推导部分最小化KL散度推导代码部分损失函数Encoder部分Decoder部分VAE整体架构 VAE问题参考资料 VAE&#xff08;变分自编码器&#xff09;是一种生成模型&#xff0c;结合了自编码器和概率图模型的思想。它通过学习数据的潜在分布&#xff0c;可以…