第六章 · 模块与包

常用标准库

本节目标

学完这一节,你会知道:

  1. 什么是标准库
  2. 如何用 datetime 处理日期时间
  3. 如何用 random 生成随机内容
  4. 如何用 math 做数学计算
  5. 如何初步认识 osre

标准库就是 Python 自带的工具箱。安装 Python 后,这些模块就可以直接导入使用。

先跑一个例子

新建文件 stdlib_demo.py,写入:

from datetime import datetime
import random
import math

now = datetime.now()
number = random.randint(1, 100)

print(f"现在时间:{now:%Y-%m-%d %H:%M:%S}")
print(f"随机数字:{number}")
print(f"16 的平方根:{math.sqrt(16)}")

运行:

python3 stdlib_demo.py

你会看到当前时间、随机数和数学计算结果。

什么是标准库?

标准库是 Python 自带的模块,不需要额外安装。

常见标准库:

  • datetime:日期时间
  • random:随机数
  • math:数学函数
  • os:操作系统相关功能
  • pathlib:路径操作
  • json:JSON 数据
  • csv:CSV 表格
  • re:正则表达式

用到什么查什么,不需要一次背完。

datetime:日期时间

from datetime import datetime, timedelta

now = datetime.now()

print(now)
print(now.strftime("%Y-%m-%d"))
print(now.strftime("%Y年%m月%d日 %H:%M"))

strftime() 用来格式化时间。

常见格式:

代码 含义
%Y
%m
%d
%H 小时
%M 分钟
%S

计算未来或过去:

tomorrow = now + timedelta(days=1)
next_week = now + timedelta(weeks=1)

print(tomorrow)
print(next_week)

random:随机数

import random

print(random.randint(1, 10))
print(random.choice(["苹果", "香蕉", "橙子"]))

从列表中抽多个:

names = ["小明", "小红", "小刚", "小美"]

print(random.sample(names, 2))

打乱列表:

cards = [1, 2, 3, 4, 5]
random.shuffle(cards)

print(cards)

math:数学函数

import math

print(math.sqrt(16))
print(math.ceil(3.1))
print(math.floor(3.9))
print(math.pi)

常见方法:

  • sqrt():平方根
  • ceil():向上取整
  • floor():向下取整
  • math.pi:圆周率

普通四舍五入可以用内置函数:

print(round(3.14159, 2))

os:操作系统相关

import os

print(os.getcwd())
print(os.listdir("."))
print(os.environ.get("HOME"))

os 可以获取当前目录、列出文件、读取环境变量。

路径操作建议优先使用上一节学过的 pathlib

re:正则表达式

正则表达式用来从文本中查找特定模式。

import re

text = "联系方式:138-0000-1234"
pattern = r"\d{3}-\d{4}-\d{4}"

match = re.search(pattern, text)

if match:
    print(match.group())

输出:

138-0000-1234

正则表达式一开始不用深学。先知道它适合“从一大段文本中提取手机号、邮箱、编号”等场景。

逐行拆解

再看开头的例子:

from datetime import datetime

datetime 模块中导入 datetime 类。

number = random.randint(1, 100)

生成 1 到 100 之间的随机整数。

math.sqrt(16)

调用 math 模块里的平方根函数。

自己改一改

stdlib_demo.py 改成抽奖程序:

from datetime import datetime
import random

names = ["小明", "小红", "小刚", "小美"]
winner = random.choice(names)

print(f"抽奖时间:{datetime.now():%Y-%m-%d %H:%M:%S}")
print(f"中奖用户:{winner}")

然后继续改:

  1. 一次抽 2 个不重复用户
  2. 打乱用户列表再输出
  3. 输出距离明天还有多少小时,提示:使用 timedelta

常见错误

1. 忘记 import

print(random.randint(1, 10))

使用前要写:

import random

2. 模块名和文件名冲突

不要把文件命名为 random.pymath.pydatetime.py

3. 以为 random 适合密码安全

普通随机可以用 random。如果要生成真正安全的密码或令牌,要用 secrets 模块。

4. 正则表达式没有加 r

正则字符串通常写成原始字符串:

pattern = r"\d+"

这样反斜杠更不容易出问题。

小练习

练习 1:当前日期

输出今天日期,格式为:

2026-04-22

练习 2:随机点名

从名字列表中随机选一个人。

练习 3:圆面积

输入半径,使用 math.pi 计算圆面积。

参考答案

练习 1:

from datetime import datetime

print(datetime.now().strftime("%Y-%m-%d"))

练习 2:

import random

names = ["小明", "小红", "小刚"]
print(random.choice(names))

练习 3:

import math

radius = float(input("请输入半径:"))
area = math.pi * radius ** 2

print(f"面积:{area:.2f}")

小结

这一节你学会了:

  1. 标准库是 Python 自带的模块
  2. datetime 可以处理日期时间
  3. random 可以生成随机数和随机选择
  4. math 提供常用数学函数
  5. osre 分别适合系统信息和文本匹配

下一节我们会学习pip 与虚拟环境。标准库之外的第三方库,需要用 pip 安装,并建议放在独立虚拟环境里。

标准库像 Python 自带的工具抽屉

datetime、random、math 这些模块不用安装,打开抽屉就能用。你不需要背完整个标准库,知道遇到时间、随机数、数学计算时该去哪儿拿工具就很好。马哥也不是靠背目录写代码的,查文档很正常。

讨论 (0)

还没有评论,来抢沙发吧!