Python 入门 / Python 内置库
Python 安装后自带大量模块,统称为“标准库”。本板块沿用“内置库”的导航名称,但标准库与 print()、len() 等无需导入的内置函数不是同一概念。
标准库无需使用 pip 安装,导入后即可使用。完整接口请参考 Python 3.11 标准库。
1. JSON(json)
json 模块用于在 Python 对象和 JSON 文本之间转换:
| 操作 | 方法 | 结果 |
|---|---|---|
| Python 对象转 JSON 字符串 | json.dumps() |
str |
| JSON 字符串转 Python 对象 | json.loads() |
dict、list 等 |
| Python 对象写入 JSON 文件 | json.dump() |
写入文件对象 |
| 从 JSON 文件读取 Python 对象 | json.load() |
dict、list 等 |
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
输出:
| Text Output | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
ensure_ascii=False 让中文等非 ASCII 字符直接保留;indent=2 让结果便于阅读。需要紧凑传输时可以省略缩进,并使用 separators=(',', ':')。
JSON 只支持有限的数据类型。Python 的集合、字节、日期时间和自定义对象不能直接序列化,需要先转换为字符串、列表或字典等兼容结构。
2. 正则表达式(re)
正则表达式适合处理具有明确文本模式的数据。简单的前缀、后缀、包含和替换需求,应优先使用字符串方法。
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
输出:
| Text Output | |
|---|---|
1 2 3 4 | |
正则表达式通常写成原始字符串 r'...',避免反斜杠被 Python 字符串提前转义。用户输入不应直接拼入正则表达式;需要按普通文本匹配时,先使用 re.escape()。
完整语法请参考 re 官方文档。
3. 日期与时间(datetime、zoneinfo 和 time)
3.1 解析和格式化日期时间
datetime 适合表示、解析、格式化和计算日期时间:
| Python | |
|---|---|
1 2 3 4 5 6 7 | |
输出:
| Text Output | |
|---|---|
1 2 3 | |
3.2 处理时区
需要明确时区时,使用 zoneinfo.ZoneInfo。不要把不带时区的日期时间直接当作北京时间或 UTC:
| Python | |
|---|---|
1 2 3 4 5 6 7 | |
输出:
| Text Output | |
|---|---|
1 | |
3.3 Unix 时间戳
time.time() 返回当前 Unix 时间戳,单位为秒;具体值每次运行都不同:
| Python | |
|---|---|
1 2 3 4 5 6 7 | |
输出:
| Text Output | |
|---|---|
1 2 | |
Unix 时间戳表示从 UTC 的 1970-01-01 00:00:00 起经过的时间,本身不携带时区。只有显示为本地时间时才需要指定时区。
4. 路径(pathlib)
pathlib 使用对象表示路径,通常比手工拼接字符串或直接使用 os.path 更直观:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
输出:
| Text Output | |
|---|---|
1 2 3 4 5 | |
处理真实文件和目录时使用 Path:
| Python | |
|---|---|
1 2 3 4 5 6 7 | |
路径是否存在、文件内容和权限取决于运行环境。读取外部传入的路径前,应确认它位于允许访问的目录中。
5. 数学(math)
math 提供常见的数学常量和函数:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
输出:
| Text Output | |
|---|---|
1 2 3 4 5 6 7 8 | |
需要数组、矩阵或大规模数值计算时,通常应使用 NumPy 等专用第三方库。
6. 随机数(random 和 secrets)
random 适合模拟、抽样和测试:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 | |
上述结果每次运行都可能不同:
choice()从序列中选择一个元素。sample()不重复地选择指定数量的元素。randint(1, 10)包含上下限,可能返回1或10。randrange(0, 10, 2)从0、2、4、6、8中选择。
测试需要可复现的伪随机结果时,可以创建独立生成器并指定种子:
| Python | |
|---|---|
1 2 3 4 | |
输出:
| Text Output | |
|---|---|
1 | |
random 不适合生成密码、验证码、访问令牌等安全数据;此类场景应使用 secrets 模块
| Python | |
|---|---|
1 2 3 4 | |
7. Base64(base64)
Base64 将二进制数据表示为 ASCII 文本。它是编码方式,不是加密方式,不能用于隐藏敏感信息。
| Python | |
|---|---|
1 2 3 4 5 6 7 8 | |
输出:
| Text Output | |
|---|---|
1 2 | |
b64encode() 和 b64decode() 处理 bytes,因此字符串编码前需要 encode(),解码后需要 decode()。URL 或文件名中使用时,可以选择 urlsafe_b64encode() 和 urlsafe_b64decode(),它们会替换标准 Base64 字母表中的 + 和 /。
8. 哈希(hashlib)
哈希函数将任意长度的数据转换为固定长度的摘要,常用于完整性校验:
| Python | |
|---|---|
1 2 3 4 5 6 | |
hexdigest() 返回十六进制字符串。相同输入会得到相同摘要,输入发生任何变化通常都会得到不同摘要。
MD5 和 SHA-1 已不适合安全敏感场景;存储密码也不能只做一次普通哈希,应使用专门的密码哈希算法和成熟实现
9. 下一步
标准库无法覆盖所有需求。接下来阅读 Python 入门 / Python 第三方库,学习如何安装并使用项目依赖。