前言
Python强大的一大原因就是自带丰富的标准库模块,开箱即用,不用重复造轮子。本篇整理廖雪峰教程主线里重点讲解的常用内置模块,包含时间模块、随机、base64、hashlib、hmac、collections、urllib等,都是开发高频使用的模块。
datetime 日期时间模块
处理日期、时间、时间戳、时间格式化、时区转换。
from datetime import datetime, timedelta # 获取当前时间 now = datetime.now() print(now) # 创建指定时间 dt = datetime(2026, 10, 21, 12, 0, 0) print(dt) # datetime 转时间戳 timestamp(秒) ts = dt.timestamp() print(ts) # 时间戳转回datetime dt2 = datetime.fromtimestamp(ts) print(dt2) # 时间加减 timedelta new_dt = now + timedelta(days=1, hours=2) print(new_dt) # 格式化 strftime / 字符串转时间 strptime s = now.strftime("%Y-%m-%d %H:%M:%S") print(s) dt3 = datetime.strptime("2026-10-21", "%Y-%m-%d") print(dt3)常用格式符:
%Y年、%m月、%d日%H24小时、%M分钟、%S秒
collections 容器增强模块
提供比list/dict更方便的容器类型。
namedtuple 命名元组
给元组的位置起名字,可读性更强
from collections import namedtuple Point = namedtuple("Point", ["x", "y"]) p = Point(10, 20) print(p.x, p.y)deque 双端队列
两端增删速度远快于list,适合队列、栈
from collections import deque q = deque([1,2,3]) q.append(4) q.appendleft(0) print(q.popleft())defaultdict
key不存在时返回默认值,避免KeyError
from collections import defaultdict d = defaultdict(int) d["a"] += 1 print(d["a"])OrderedDict
有序字典(Python3.7+普通dict本身有序,历史版本用它)
from collections import OrderedDict od = OrderedDict() od["a"] = 1 od["b"] = 2Counter 计数器
快速统计元素出现次数
from collections import Counter c = Counter("abracadabra") print(c)base64 编码模块
Base64是一种二进制转文本的编码方式,不是加密,适合在文本协议里传递二进制数据。
import base64 data = b"hello python" b64_str = base64.b64encode(data) print(b64_str) raw = base64.b64decode(b64_str) print(raw)注意:base64会把
+ / =等字符放到URL里产生问题,有urlsafe_b64encode版本。
hashlib 哈希摘要模块
计算MD5、SHA1、SHA256等摘要,常用于密码存摘要、文件校验。
摘要不可逆,相同输入一定得到相同摘要。
import hashlib # md5 md5 = hashlib.md5() md5.update(b"password123") print(md5.hexdigest()) # sha256 sha = hashlib.sha256() sha.update(b"hello") print(sha.hexdigest())业务密码存储建议加盐(拼接自定义随机字符串)再算摘要,防止彩虹表破解。
hmac 带密钥哈希
Hmac = Hash + Key,带秘钥的摘要算法,比单纯hash更安全,常用于接口签名。
import hmac message = b"hello" key = b"secret" h = hmac.new(key, message, digestmod="md5") print(h.hexdigest())random 随机模块
生成随机数、随机选择、打乱序列
import random print(random.random()) # [0,1)浮点数 print(random.randint(1,10)) # 1~10整数 print(random.choice([1,2,3,4])) # 随机选一个 lst = [1,2,3,4] random.shuffle(lst) # 原地打乱 print(lst)urllib 网络请求模块
内置HTTP请求库,不用额外安装,简单爬取、调用接口。
from urllib import request, parse # get请求 req = request.Request("[https://www.baidu.com](https://www.baidu.com)") with request.urlopen(req) as f: data = f.read() print(data.decode("utf-8", errors="ignore")) # url参数编码 params = parse.urlencode({"name":"小明", "age":18}) print(params)复杂网络开发一般用第三方
requests,urllib适合轻量场景。
struct 处理二进制
按照指定格式打包、解包二进制字节流,处理网络协议、二进制文件。
import struct # 打包:I代表unsigned int bs = struct.pack('I', 1024) print(bs) val = struct.unpack('I', bs) print(val)itertools 迭代器工具
生成无限迭代器、组合、排列,配合for循环,节省内存。
import itertools # 无限计数 for n in itertools.count(1,2): if n>10: break print(n) # 排列、组合 print(list(itertools.permutations([1,2,3],2))) print(list(itertools.combinations([1,2,3],2)))小结
datetime:日期时间处理、时间戳、时区、格式化;collections:增强容器:namedtuple、deque、defaultdict、Counter;hashlib/hmac:摘要、签名,用于密码校验、接口验签;base64:二进制转文本编码;random:随机数;urllib原生http;struct二进制打包;itertools迭代工具。