这篇笔记将带你走进 Python 的“百宝箱”。Python 被称为“自带电池”(Batteries Included)的语言,就是因为它内置了极其丰富的标准库,无需安装即可直接 import 使用。
📦 Python 常用内置标准库 (Standard Libraries) 学习笔记
1. 时间与日期:datetime
处理时间、日期、时区转换的利器。
from datetime import datetime, timedelta
# 1. 获取当前时间
now = datetime.now()
print(f"当前时间: {now}")
# 2. 格式化输出 (strftime)
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2023-10-27 14:30:05
# 3. 字符串转时间对象 (strptime)
date_str = "2023-01-01"
dt_obj = datetime.strptime(date_str, "%Y-%m-%d")
# 4. 时间计算 (timedelta)
yesterday = now - timedelta(days=1)
future = now + timedelta(hours=2)
2. 数学与随机数:math & random
math:高精度数学计算
import math
print(math.pi) # 圆周率 3.14159...
print(math.sqrt(16)) # 开平方 4.0
print(math.ceil(3.1)) # 向上取整 4
random:生成伪随机数
import random
print(random.random()) # 0到1之间的浮点数
print(random.randint(1, 10)) # 1到10之间的随机整数(含10)
fruits = ["苹果", "香蕉", "橙子"]
print(random.choice(fruits)) # 随机选一个
items = [1, 2, 3, 4, 5]
random.shuffle(items) # 打乱列表顺序
3. 数据交换格式:json
JSON 是互联网最通用的数据格式。Python 字典与 JSON 字符串的转换非常简单。
import json
data = {"name": "Jojo", "age": 25, "is_admin": False}
# 1. 编码:字典 -> JSON 字符串 (dumps)
json_str = json.dumps(data, indent=4) # indent让输出更漂亮
# 2. 解码:JSON 字符串 -> 字典 (loads)
parsed_data = json.loads(json_str)
# 3. 处理文件 (dump/load)
with open("config.json", "w") as f:
json.dump(data, f) # 直接写入文件
4. 系统接口与参数:sys
主要用于与 Python 解释器和系统环境交互。
import sys
# 1. 获取命令行参数 (常用语脚本传参)
# 运行命令: python script.py arg1 arg2
print(sys.argv)
# 2. 退出程序
# sys.exit(0) # 0表示正常退出
# 3. 模块搜索路径
# print(sys.path)
# 4. 查看系统平台
print(sys.platform) # win32, darwin(Mac), linux
5. 高级容器数据类型:collections
它是内置 list/dict/tuple 的增强版。
Counter: 快速计数器。defaultdict: 带有默认值的字典(防止 KeyError)。
from collections import Counter, defaultdict
# Counter 示例:统计词频
text = "apple banana apple orange apple banana"
counts = Counter(text.split())
print(counts) # Counter({'apple': 3, 'banana': 2, 'orange': 1})
print(counts.most_common(1)) # 获取出现次数最多的
# defaultdict 示例
d = defaultdict(int) # 默认值为 0
d["count"] += 1 # 不会报错,直接从0加到1
6. 正则表达式:re
用于复杂的文本搜索、替换和匹配。
import re
text = "我的邮箱是 jojo_123@example.com,请联系我。"
# 匹配邮箱的简单正则
pattern = r'[a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-zA-Z]+'
# 搜索
match = re.search(pattern, text)
if match:
print(f"找到邮箱: {match.group()}")
# 替换
clean_text = re.sub(pattern, "[HIDDEN]", text)
print(clean_text)
🛠 什么时候该用哪个库?
| 需求 | 推荐库 |
|---|---|
| 处理文件路径、创建文件夹 | os / pathlib |
| 读取/写入 CSV 数据 | csv |
| 网络请求(标准库版) | urllib.request(虽然大家更爱用第三方 requests) |
| 压缩和解压文件 | zipfile / tarfile |
| 计算代码执行时间 | timeit |
| 记录运行日志 | logging |
💡 总结建议
- 先查标准库:在准备自己写一个复杂的功能前,先搜索“Python standard library [功能名]”,通常已经有现成的解决方案了。
- 避免重复造轮子:比如
Counter计数比你自己写for循环统计要快得多,也简洁得多。 - 阅读文档:Python 官方文档(docs.python.org)是学习这些库的最好地方。