Python 四大常用模块深度指南:json、datetime、random、turtle从入门到实战,一文吃透!

文章目录

前言

一、为什么要学这四个模块

二、json:让 Python 与万物互联

实战 1:一行代码保存配置

实战 2:复杂对象自定义序列化

三、datetime:让时间不再是玄学

实战 1:计算“距离今天还有多少天”

实战 2:把时间戳与字符串互转

实战 3:优雅的 UTC 与本地时区转换

四、random:伪随机,真方便

实战 1:命令行抽签器

实战 2:生成 6 位验证码

实战 3:模拟抛硬币 10000 次验证概率

五、turtle:画的不只是图形,还有快乐

实战 1:六芒星

实战 2:实时画正弦曲线

实战 3:画一棵分形树(递归魔法)

六、融会贯通:一个迷你项目

七、结语



前言

Python 的“电池”哲学让我们不必重复造轮子。本文挑选 网络传输、时间处理、随机数、图形可视化 四大高频场景,通过 jsondatetimerandomturtle 四个标准库,由浅入深地带你写出优雅且实用的代码。所有示例均在 Python 3.8+ 实测通过,复制即可运行。


一、为什么要学这四个模块

在日常开发里,我们经常会遇到四类需求:

  1. 把 Python 对象转成字符串,方便网络传输或保存——交给 json;

  2. 记录日志、计算时间差——交给 datetime;

  3. 抽奖、验证码、蒙特卡洛模拟——交给 random;

  4. 给小朋友画个五角星、给自己画个股票 K 线——交给 turtle。

掌握它们,80% 的脚本工具需求都能迎刃而解。

二、json:让 Python 与万物互联

json 模块的核心其实就四个函数:

  • json.dumps(obj):把 Python 对象(字典、列表、字符串、数字等)转成 JSON 字符串;

  • json.loads(s):把 JSON 字符串还原成 Python 对象;

  • json.dump(obj, fp)json.load(fp) 则是前两者的文件版,省去手动读写文件。

实战 1:一行代码保存配置

import json, pathlib

config = {
    "db": {"host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456"},
    "debug": True
}

pathlib.Path("config.json").write_text(json.dumps(config, ensure_ascii=False, indent=2))
print("配置已写入磁盘!")

# 再读回来
cfg = json.loads(pathlib.Path("config.json").read_text())
print("数据库地址:", cfg["db"]["host"])

小贴士:

  • ensure_ascii=False 保留中文;

  • indent=2 让输出带缩进,方便人眼阅读。

实战 2:复杂对象自定义序列化

当遇到 datetimeDecimal 这类 JSON 不直接支持的对象时,可以用 default 参数:

from datetime import datetime
log = {"time": datetime.now(), "level": "INFO", "msg": "服务启动成功"}

json_str = json.dumps(log, default=str)  # 把 datetime 转成 ISO 字符串
print(json_str)

三、datetime:让时间不再是玄学

datetime 模块里最重要的四个类:

  • datetime.datetime:带日期和时间的完整时刻;

  • datetime.date:只关心年月日;

  • datetime.timedelta:表示“一段时间”;

  • datetime.timezone:处理时区。

实战 1:计算“距离今天还有多少天”

from datetime import datetime, timedelta

target = datetime(2025, 12, 31)
delta = target - datetime.now()
print(f"距离 2025 跨年还剩 {delta.days} 天")

实战 2:把时间戳与字符串互转

# 字符串 → datetime
dt = datetime.strptime("2024-07-12 18:30:00", "%Y-%m-%d %H:%M:%S")

# datetime → 时间戳(秒)
ts = int(dt.timestamp())

# 时间戳 → datetime
print(datetime.fromtimestamp(ts))

实战 3:优雅的 UTC 与本地时区转换

from datetime import datetime, timezone, timedelta

utc_now = datetime.now(timezone.utc)                 # UTC 时间
bj_now = utc_now.astimezone(timezone(timedelta(hours=8)))  # 北京时间
print("UTC :", utc_now.strftime("%Y-%m-%d %H:%M:%S"))
print("北京:", bj_now.strftime("%Y-%m-%d %H:%M:%S"))

四、random:伪随机,真方便

虽然 random 产生的是伪随机数,但日常应用足够。常用 API:

  • random.randint(a, b):闭区间 [a, b] 内整数;

  • random.choice(seq):从序列里随机挑一个;

  • random.sample(population, k):无放回抽样 k 个;

  • random.random():生成 0.0~1.0 之间浮点数;

  • random.seed(x):设置种子,让结果可复现。

实战 1:命令行抽签器

import random

participants = ["张三", "李四", "王五", "赵六"]
lucky = random.choice(participants)
print("今晚请客的是:", lucky)

实战 2:生成 6 位验证码

code = ''.join(random.choices("0123456789ABCDEF", k=6))
print("验证码:", code)

实战 3:模拟抛硬币 10000 次验证概率

random.seed(42)  # 复现实验
heads = sum(random.random() < 0.5 for _ in range(10000))
print(f"正面 {heads} 次,反面 {10000-heads} 次")

五、turtle:画的不只是图形,还有快乐

turtle 把一只小海龟放在画布上,你发命令它就移动,留下轨迹。
核心命令:

  • turtle.forward(distance) / turtle.back(distance):前进、后退;

  • turtle.left(angle) / turtle.right(angle):左转、右转;

  • turtle.penup() / turtle.pendown():抬笔、落笔;

  • turtle.color(color) / turtle.width(width):换色、线宽;

  • turtle.speed(speed):0 最快,1-10 逐渐加速;

  • turtle.done():保持窗口不自动关闭。

实战 1:六芒星

import turtle as t

t.speed(3)
for _ in range(2):
    for _ in range(3):
        t.forward(200)
        t.left(120)
    t.left(60)
t.hideturtle()
t.done()

实战 2:实时画正弦曲线

import turtle, math

turtle.tracer(False)  # 关闭动画,直接画
turtle.setworldcoordinates(0, -1.5, 2*math.pi, 1.5)  # 自定义坐标系
turtle.color("red")
turtle.width(2)

for x in range(0, 720):
    turtle.goto(x/100, math.sin(x/100))

turtle.hideturtle()
turtle.done()

实战 3:画一棵分形树(递归魔法)

import turtle as t

def tree(branch_len):
    if branch_len < 10:
        return
    t.forward(branch_len)
    t.right(20)
    tree(branch_len - 15)
    t.left(40)
    tree(branch_len - 15)
    t.right(20)
    t.backward(branch_len)

t.left(90)
t.up(); t.backward(100); t.down()
t.color("brown")
tree(90)
t.done()

六、融会贯通:一个迷你项目

“随机生成 30 天的温度,保存为 JSON,再画出折线图”。

import json, random, datetime, turtle

# 1. 生成数据
random.seed(2024)
data = []
base = datetime.datetime(2024, 7, 1)
for i in range(30):
    day = base + datetime.timedelta(days=i)
    temp = round(25 + 10 * random.random(), 1)
    data.append({"date": day.strftime("%m-%d"), "temp": temp})

# 2. 落盘
with open("temp.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 3. 画图
turtle.setup(800, 400)
turtle.tracer(False)
turtle.up(); turtle.goto(-380, -150); turtle.down()
turtle.speed(0)

for i, item in enumerate(data):
    x = -380 + i * 26
    y = -150 + (item["temp"] - 20) * 20  # 简单缩放
    turtle.goto(x, y)
    turtle.dot(5)

turtle.hideturtle()
turtle.done()

七、结语

json 让我们与外部世界沟通,datetime 让时间可算可控,random 让程序增添趣味,turtle 让创意跃然屏上。
掌握这四个模块,你的 Python 工具箱已经能覆盖 80% 的日常脚本需求。
收藏 + 实践,你会发现:Python 的优雅,就藏在这些“小轮子”里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值