装箱和拆箱 https://ceshiren.com/t/topic/24130/6
1.解包/拆包
解包通常指的是将可迭代对象(如列表、元组、字符串)的元素分解成独立的变量。
举例:
# 解包一个列表
numbers = [1, 2, 3]
a, b, c = numbers
print(a) # 输出: 1
print(b) # 输出: 2
print(c) # 输出: 3
# 解包一个元组
colors = ('red', 'green', 'blue')
x, y, z = colors
print(x) # 输出: red
print(y) # 输出: green
print(z) # 输出: blue
# 解包字符串,将字符串看作可迭代的
s = "hello"
a, b, c, d, e = s
print(a) # 输出: h
print(b) # 输出: e
字典解包:解包的输出是key(非value)
a,b,c = {'key1': 1, 'key2': 2,'key3':3}
print(a,b,c) # 输出 key1 key2 key3
python3新增特性使用*解包
(1)普通赋值操作
# 使用星号表达式进行部分解包
data = [1, 2, 3, 4, 5]
first, *middle, last = data
print(first) # 输出: 1
print(middle) # 输出: [2, 3, 4]
print(last) # 输出: 5
(2)函数解包
函数参数使用*或者**解包
- 元组、列表、字符串使用*解包
- 字典使用**解包
def fun(a,b):
print(a,b)
fun(**{'a':1,'b':2}) # 字典使用**就会自动拆解为key=value形式,fun(a=1,b=2)
fun(*(1,2))
2.组包
多个值赋值给一个变量,最后输出是一个元组(解释器自动组装)。
举例:
# 变量赋值
a = 1,2,3
print(a) # 输出(1,2,3)
# 函数返回
def fun():
return 1,2
print(fun()) # 输出(1,2)