Python自学 - 标准库介绍

<< 返回目录

1 Python自学 - 标准库介绍

  标准库是安装Python时自带的一些模块集合,集成了丰富的功能,避免用户反复造轮子,这极大的提高了生产效率!

1.1 几种常用的标准库

1.1.1 os 模块

  提供了与操作系统交互的接口,可用于处理文件和目录操作、环境变量操作、进程管理等。
  查看os模块下有哪些对象,可以使用print(dir(os))语句。

  • 示例1:os模块使用举例
import os# 获取当前工作目录
print(os.getcwd())  # 列出目录中的文件和目录
print(os.listdir('.'))  # 创建目录
try:os.mkdir('new_directory')  
except Exception as e:print(f'出现错误:{e}')# 检查文件或目录是否存在
print(os.path.exists('file.txt'))  # 拼接路径
path = os.path.join(os.getcwd(), 'new_file.txt')
print(path)

输出:

D:\TYYSOFT\Study\Python
['20250114_101152.py', '20250115_084302.py', 'class_human.py', 'get_max_member.py', 'human_plus.py', 'module1.py', 'module_test_1.py', 'new_directory', 'print_hello.py', 'scan_file.py', 'selection_sort.py', 'slection_sort2.py', 'social', 'test-4.py', 'test.db', 'test_package.py', 'try_customize.py', 'try_customize_err.py', 'try_more_err.py', 'try_more_err2.py', 'try_test_1.py', 'try_test_division.py', 'tyr_customize_err2.py', 'yield_test.py', '__pycache__', '模块1.py']
出现错误:[WinError 183] 当文件已存在时,无法创建该文件。: 'new_directory'
False
D:\TYYSOFT\Study\Python\new_file.txt

1.1.2 sys 模块

  提供了与 Python 解释器和系统交互的接口,包括获取命令行参数控制程序执行退出程序查看 Python 解释器的版本等。
  查看sys模块下有哪些对象,可以使用print(dir(sys))语句。

  • 示例2: sys模块使用举例
import sys# 获取命令行参数
print(sys.argv)  # 查看 Python 版本
print(sys.version)  # 查看sys下有哪些对象
#print(dir(sys))# 退出程序
sys.exit(0) 

输出:

['sys_study.py']
3.13.1 (tags/v3.13.1:0671451, Dec  3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)]

1.1.3 math 模块

  提供了各种数学运算的函数和常量,如三角函数指数函数对数函数幂函数数学常数(如 pi 和 e)。

  • 示例3:math模块使用举例
import math# 计算平方根
print(math.sqrt(25))  # 计算正弦值
print(math.sin(math.pi / 2))  # 计算自然对数
print(math.log(10))  

输出:

5.0
1.0
2.302585092994046

1.1.4 random 模块

  用于生成随机数和进行随机选择。

  • 示例4:random模块使用举例
import random# 生成 0 到 1 之间的随机浮点数
print(random.random())  # 从列表中随机选择一个元素
my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))  # 打乱列表元素顺序
random.shuffle(my_list)
print(my_list)  

输出(每次输出不一样):

0.6254888854381639
1
[2, 4, 3, 1, 5]

1.1.5 datetime 模块

  提供了日期和时间的处理功能,包括日期和时间的创建、格式化、计算和解析等。

  • 示例5:datetime 模块使用举例
from datetime import datetime, timedelta# 获取当前日期和时间
now = datetime.now()
print(now)  # 创建特定日期和时间
date = datetime(2025, 1, 15)
print(date)  # 日期和时间的计算
future_date = now + timedelta(days=7)
print(future_date)  # 日期和时间的格式化
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)  

输出:

2025-01-15 19:12:46.682913
2025-01-15 00:00:00
2025-01-22 19:12:46.682913
2025-01-15 19:12:46

1.1.6 re 模块

  用于正则表达式操作,可用于字符串的匹配、搜索、替换和分割等。

  • 示例6:re模板使用示例
import re# 查找匹配的字符串
pattern = re.compile(r'\d+')
result = pattern.findall('abc123def456')
print(result)  # 替换匹配的字符串
new_string = pattern.sub('X', 'abc123def456')
print(new_string)  

输出:

['123', '456']
abcXdefX

1.1.7 json 模块

  用于处理 JSON 数据,包括 JSON 数据的编码(将 Python 对象转换为 JSON 字符串)和解码(将 JSON 字符串转换为 Python 对象)。

import jsondata = {'key': 'value', 'list': [1, 2, 3]}# 将 Python 对象转换为 JSON 字符串
json_string = json.dumps(data)
print(json_string)  # 将 JSON 字符串转换为 Python 对象
parsed_data = json.loads(json_string)
print(parsed_data)  

输出:

{"key": "value", "list": [1, 2, 3]}
{'key': 'value', 'list': [1, 2, 3]}

1.1.8 collections 模块

  提供了一些有用的数据结构,如 defaultdictCounterdeque 等,可用于替代内置的数据结构,提供更强大的功能。
示例:

from collections import defaultdict, Counter, deque# defaultdict 提供默认值
dd = defaultdict(int)
dd['key'] += 1
print(dd['key'])  # Counter 用于计数
counter = Counter(['a', 'b', 'a', 'c', 'a'])
print(counter)  # deque 是双端队列,支持从两端添加和删除元素
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq)  

输出:

1
Counter({'a': 3, 'b': 1, 'c': 1})
deque([0, 1, 2, 3, 4])

1.1.9 itertools 模块

  提供了各种迭代器函数,可用于组合、排列、笛卡尔积等操作。
示例:

import itertools# 生成排列
permutations = itertools.permutations([1, 2, 3], 2)
print(list(permutations))  # 生成组合
combinations = itertools.combinations([1, 2, 3], 2)
print(list(combinations))  # 生成笛卡尔积
product = itertools.product([1, 2], ['a', 'b'])
print(list(product))  

输出:

[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
[(1, 2), (1, 3), (2, 3)]
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

1.1.10 urllib 模块

  用于网络请求和 URL 处理,可进行 HTTP 请求、URL 解析等操作。
示例:

from urllib.request import urlopen
from urllib.parse import urlparse# 打开 URL
response = urlopen('http://www.example.com')
print(response.read())  # 解析 URL
parsed_url = urlparse('http://www.example.com/path?query=value')
print(parsed_url)  

输出:

b'<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset="utf-8" />\n    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n    <meta name="viewport" content="width=device-width, initial-scale=1" />\n    <style type="text/css">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'
ParseResult(scheme='http', netloc='www.example.com', path='/path', params='', query='query=value', fragment='')

1.2 其他比较重要的标准模块

1.2.1 logging 模块

  用于日志记录,可根据不同的级别(如 DEBUGINFOWARNINGERRORCRITICAL)记录日志信息。
示例:

import logginglogging.basicConfig(level=logging.INFO)
logging.info('This is an info message')
logging.error('This is an error message')

输出:

INFO:root:This is an info message
ERROR:root:This is an error message

1.2.2 argparse 模块

  用于解析命令行参数,使程序能够接受命令行输入并处理参数。
示例:

import argparseparser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',const=sum, default=max,help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))

输出:

D:\TYYSOFT\Study\Python>python argparse_study.py -h
usage: argparse_study.py [-h] [--sum] N [N ...]Process some integers.positional arguments:N           an integer for the accumulatoroptions:-h, --help  show this help message and exit--sum       sum the integers (default: find the max)
D:\TYYSOFT\Study\Python>python argparse_study.py --sum 100 300 22
422

1.2.3 sqlite3 模块

  提供了对 SQLite 数据库的支持,可用于创建数据库、执行 SQL 语句、进行数据查询和更新等操作。
示例:

import sqlite3# 连接到数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()# 创建表
c.execute('CREATE TABLE IF NOT EXISTS users (id INT, name TEXT)')# 插入数据
c.execute('INSERT INTO users (id, name) VALUES (1, "Alice")')# 提交事务
conn.commit()# 查询数据
c.execute('SELECT * FROM users')
print(c.fetchall())# 关闭连接
conn.close()

输出:

[(1, 'Alice')]

注:sqlite3.connect('example.db')会在本地生成数据库文件example.db

1.2.4 time 模块

  提供了时间相关的函数,包括时间获取、时间转换、时间延迟等操作。
示例:

import time# 获取当前时间戳
print(time.time())  # 睡眠一段时间
time.sleep(1)  # 格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted_time)  

输出:

1736943637.7549584
2025-01-15 20:20:38

1.3 总结

  Python官方文档:https://docs.python.org/3/library/,读者可以阅读官方手册 ,这里有非常详细的各种内置库的使用说明。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

<< 返回目录

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

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

相关文章

【全套】基于机器学习的印度森林火灾发生概率的分析与预测

【私信送源码文档】基于机器学习的印度森林火灾发生概率的分析与预测 对应的ppt 摘 要 随着全球气候变化的不断加剧&#xff0c;火灾的频发和规模逐渐增大&#xff0c;成为备受关注的问题。本文旨在提高对火灾发生概率的准确性&#xff0c;为火灾的预防和管理提供科学支持。在…

RabbitMQ中有哪几种交换机类型?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ中有哪几种交换机类型&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ中有哪几种交换机类型&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中&#xff0c;交换机&#xf…

HTML拖拽功能(纯html5+JS实现)

1、HTML拖拽--单元行拖动 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…

SpringMVC复习笔记

文章目录 SpringMVC 概念和基本使用SpringMVC 简介SpringMVC 核心组件和调用流程SpringMVC 基本使用第一步&#xff1a;导入依赖第二步&#xff1a;Controller 层开发第三步&#xff1a;SpringMVC 配置类配置核心组件第四步&#xff1a;SpringMVC 环境搭建第五步&#xff1a;部…

记录一次Android Studio的下载、安装、配置

目录 一、下载和安装 Android Studio 1、搜索下载Android studio ​2、下载成功后点击安装包进行安装&#xff1a; 3、这里不用打勾&#xff0c;直接点击安装 &#xff1a; 4、完成安装&#xff1a; 5、这里点击Cancel就可以了 6、接下来 7、点击自定义安装&#xff1a…

字节序 大端和小端

目录 什么是 大端存储和小端存储&#xff1f;为什么会有大小端转换问题如何检查自己电脑 是大端还是小端&#xff1f;大端小端处理函数使用位运算操作来手动转换大端和小端。使用标准库中的htonl和ntohl函数代码示例&#xff1a; 什么是 大端存储和小端存储&#xff1f; 大端模…

金融项目实战 03|JMeter脚本实现手工接口测试

目录 一、环境说明 1、项目环境搭建 2、Mock说明 二、构造测试数据 1、通过系统页面构造 2、通过接口构造 3、通过数据库构造【推荐】 4、案例&#xff1a;构造借款业务数据 三、JMeter执行接口测试用例 1、获取图片验证码、获取短信验证码 2、注册脚本 3、登录脚本…

【优先算法】滑动窗口--(结合例题讲解解题思路)(C++)

目录 1. 例题1&#xff1a;最大连续1的个数 1.1 解题思路 1.2代码实现 1.3 错误示范如下&#xff1a;我最开始写了一种&#xff0c;但是解答错误&#xff0c;请看&#xff0c;给大家做个参考 2. 将 x 减到 0 的最小操作数 2.1解题思路 2.2代码实现 1. 例题1&#xff…

JDK17语法新增

1.yield关键字: 2.var关键字&#xff1a; 3.密封类&#xff1a; ⼀般应⽤在类和接⼝中&#xff0c;对接⼝和类的实现和继承进⾏约束。主要使⽤的关键字是 final 。当这个类被 final 修饰了&#xff0c;被修饰的类就变成完全封闭的状态了&#xff0c;所有类都没办法继承。…

TCP 序列和确认号说明 | seq 和 ack 号计算方法

注&#xff1a;本文为 “TCP 序列” 相关文章合辑。 英文引文机翻未校。 TCP Sequence and Acknowledgement Numbers Explained TCP 序列和确认编号说明 TCP Sequence (seq) and Acknowledgement (ack) numbers help enable ordered reliable data transfer for TCP streams…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…

《数据思维》之数据可视化_读书笔记

文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 数据之道&#xff0c;路漫漫其修远兮&#xff0c;吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准&#xff1a;准确、有…

【AIGC】SYNCAMMASTER:多视角多像机的视频生成

标题&#xff1a;SYNCAMMASTER: SYNCHRONIZING MULTI-CAMERA VIDEO GENERATION FROM DIVERSE VIEWPOINTS 主页&#xff1a;https://jianhongbai.github.io/SynCamMaster/ 代码&#xff1a;https://github.com/KwaiVGI/SynCamMaster 文章目录 摘要一、引言二、使用步骤2.1 TextT…

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout&#xff08;检出&#xff09;到 Pycharm中 2、推送…

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时&#xff0c;Kafka Listener 的默认行为是开始监听某个主题。但是&#xff0c;有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener&#xff0c;我们需要三种主要方法…

C++|CRC校验总结

参考&#xff1a; Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c;简称CRC&#xff09;是一种数据校验算法&#xff0c;广泛用于检测数据传输或存储过程中的错误。…

# c语言:数组详解一

c语言&#xff1a;数组详解一 数组数组的概念引例&#xff1a;什么是数组数组的特征&#xff1a;下标&#xff08;索引&#xff09; 常用的数组按维度划分一维数组数组的定义&#xff1a;数组元素的访问数组的初始化**案例一、斐波拉契数列&#xff1a;****案例二、冒泡排序&am…

Docker启动达梦 rman恢复

目录标题 1. 主库备份2. Docker启动备库3. 备库修改属组4. 开始恢复5. 连接数据库配置归档 & Open6. 检查数据 关于达梦数据库&#xff08;DMDBMS&#xff09;的主库备份、Docker启动备库、恢复备份以及配置归档和打开数据库的详细步骤。 1. 主库备份 # 使用达梦数据库备…

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表&#xff0c;我们会发现需要开通WPS会员才能使用合并功能&#xff1b; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢&#xff1f; 1、首先我们要看excel后缀是 .xlsx 还是 .xls &#xff1b;如果是.xlsx 那么 我们需要修改为 .xls 注…

【Python项目】个人密码本文档系统

【Python项目】个人密码本文档系统 技术简介&#xff1a;采用Python技术、Django、MYSQL数据库等实现。 系统简介&#xff1a;系统主要的功能有&#xff08;1&#xff09;新建密码本&#xff1a;用户可以创建新的密码本来记录自己的账户与密码&#xff1b; &#xff08;2&#…