WMX · 随记
·Python· 3 分钟阅读

解包赋值:把数据形状写在接收端

通过 row[0]、row[1] 取字段,字段顺序错误可能隐藏很久。解包能为位置赋予名字,并在数量不符时立即报错。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

Python Tutorial for Beginners

Python 入门课程作为语法与编程背景复习;本文使用的较新标准库特性不保证在该课程中逐项覆盖。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

Python 系列概览:输入校验、数据处理与行为验证
Python 系列概览:输入校验、数据处理与行为验证 点击图片查看大图 ↗

问题从哪里出现

通过 row[0]、row[1] 取字段,字段顺序错误可能隐藏很久。解包能为位置赋予名字,并在数量不符时立即报错。

理解核心机制

普通解包要求元素个数匹配,带星号的目标接收剩余项并生成列表。它适合清晰的小结构;数量很大或无限的迭代器不应通过星号一次收集。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。

Python7 行 · 可横向滚动
row = ("alice", 90, "python", "ai")
name, score, *tags = row
assert tags == ["python", "ai"]
print(name, score, tags)
left, right = 3, 8
left, right = right, left
assert (left, right) == (8, 3)

适用边界与常见误区

解包只能检查数量,不能保证字段语义正确。长期演进的数据接口可使用 dataclass、具名元组或显式字典键,减少位置耦合。

继续练习

分别输入两个、三个和五个字段,观察带星号与不带星号的行为,并决定哪些输入应该被拒绝。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档