python解包赋值可将可迭代对象元素一次性分配给多个变量,支持基础解包、星号不定长捕获、嵌套结构拆解,并广泛用于循环遍历和函数参数传递。

Python的解包赋值(Unpacking Assignment)是一种简洁、直观且高效的数据分配方式,能一次性将可迭代对象中的元素分发给多个变量。掌握它,能显著减少冗余代码,提升可读性与表达力。
基础解包:让赋值更直接
最常见的是将列表、元组等序列直接解包为多个变量,要求变量数量与元素数量严格匹配:
- a, b, c = [1, 2, 3] → a=1, b=2, c=3
- (x, y) = "ab" → 字符串也可解包,x='a', y='b'
- 不加括号也合法:m, n = 10, 20(右侧自动视为元组)
用星号(*)处理不定长数据
当元素个数不确定或需分离首尾时,* 能捕获“剩余部分”,支持出现在任意位置(但只能有一个):
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
- first, *middle, last = [1, 2, 3, 4, 5] → first=1, middle=[2,3,4], last=5
- *head, tail = range(5) → head=[0,1,2,3], tail=4
- a, b, *_, z = "hello world" → 忽略中间字符,a='h', b='e', z='d'
嵌套解包:一层层拆开复杂结构
元组或列表中嵌套可迭代对象时,可同步解包,无需临时变量:
- (x, (y, z)) = (1, (2, 3)) → x=1, y=2, z=3
- [a, [b, c], d] = [10, [20, 30], 40] → 支持混合括号类型
- 函数返回元组时常用:name, (lat, lon) = "Tokyo", (35.68, 139.69)
在循环和函数调用中高效使用
解包不仅限于单次赋值,更是遍历与传参的利器:
- 遍历字典项:for k, v in {'a':1, 'b':2}.items(): print(k, v)
- 传递参数:data = (3, 4); print(pow(*data)) → 等价于 pow(3, 4)
- 交换变量不用临时变量:a, b = b, a(本质是元组构造+解包)
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










