1.python 解包概念
Python 中有两个特殊的操作符:
*
和**
,它们有两种用途:参数解包和序列解包。
- 序列解包:将序列(列表或元组)中的元素解包为变量
- 参数解包:函数定义中,
*
用于收集额外的位置参数到一个元组,而**
用于收集额外的关键字参数到一个字典。
2.序列解包
常使用于列表或者元组
#1.基本解包:可以将一个序列(如列表或元组)中的元素分别赋值给多个变量
a, b, c = [1, 2, 3]
print(a) # 1
print(b) # 2
print(c) # 3
#2.使用 * 收集多余元素: 序列中的元素数量多于变量数量,可以使用 * 来收集多余的元素到一个列表中
a, *b, c = [1, 2, 3, 4, 5]
print(a) # 1
print(b) # [2, 3, 4]
#3.嵌套序列解包:* 可以放在不同的位置,根据需要收集不同位置的元素
a, (b, c), d = [1, (2, 3), 4]
print(a) # 1
print(b) # 2
print(c) # 3
print(d) # 4
*
可以放在不同的位置,根据需要收集不同位置的元素。
3.函数参数解包
#1.位置参数解包:可以将一个可迭代对象(如列表或元组)解包后作为函数的位置参数传递
def func(a, b, c):
print(a, b, c)
lst = [1, 2, 3]
func(*lst) # 1 2 3
#可迭代对象中的元素数量必须与函数的参数数量一致。
#2.关键字参数解包:对于字典,可以使用 ** 进行解包,将字典中的键值对作为关键字参数传递给函数
def func(a, b, c):
print(a, b, c)
dct = {'a': 1, 'b': 2, 'c': 3}
func(**dct) # 1 2 3
#字典中的键必须与函数的参数名一致
4.应用场景
- 解包在处理函数返回多个值、从数据结构中提取特定元素等场景非常有用。
- 可以使代码更加简洁、可读,减少索引和切片的使用。