python的自动解包 自动组包

装箱和拆箱 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)