python解包赋值

勋勋的大宝贝 / 2023-08-30 / 原文

x = [1, 2]
a, b = [1, 2]       #解包赋值 ,元组可以解包赋值, 列表可以解包赋值,字符串也可以
print(x)#[1, 2]
print(a)#1
print(b)#2

c, d, *e = [5, 6, 7, 8, 9]
print(c)#5
print(d)#6
print(e)#[7, 8, 9]

# 从而引申到循环变量的赋值
stu = {'name':'lfj',  'age':18 }
print(stu.items())  #dict_items([('name', 'lfj'), ('age', 18)])
for item in stu.items():
    print(item)
    # ('name', 'lfj')
    # ('age', 18)

# 这里就运用了解包赋值
for key, value in stu.items():
    print(key, value)
    # name lfj
    # age 18

 

如果变量少于值的数量,就会报错,这里可以用到*来接收,例如f,*g=[10,11,12]

 

 

在Python中,将变量前加一个星号(*)可以用于以下几个用途:

1. 展开可迭代对象: 

当一个可迭代对象(如列表或元组)作为函数的参数时,可以通过在变量前加星号来展开该可迭代对象,将其元素作为单独的参数传递给函数。 

例如:

numbers = [1, 2, 3, 4, 5]
print(*numbers)  # 输出:1 2 3 4 5

2 .解压可迭代对象:

将一个可迭代对象的元素解压赋值给多个变量时,可以使用星号来接收剩余的元素。

例如:

numbers = [1, 2, 3, 4, 5]
first, *rest = numbers
print(first)  # 输出:1
print(rest)  # 输出:[2, 3, 4, 5]

3. 在函数定义时指定可变长度参数: 

在函数定义时,可以使用星号来指定一个可变长度参数,即接受任意数量的参数,并将它们作为一个元组传递给函数。 

例如:

def print_numbers(*args):
    print(type(args))   # <class 'tuple'>
    print(args) # (1, 2, 3, 4, 5)
    for num in args:
        print(num)
print_numbers(1, 2, 3, 4, 5)  # 输出:1 2 3 4 5

 

 4 .解包赋值给函数参数

a = ('lfj', 18)
def fun2(name, age):
    print('姓名:', name)#姓名: lfj
    print('年龄:', age)#年龄: 18
def fun1(a):
    # print(type(a))  #<class 'tuple'>
    # print(a)    #('lfj', 18)
    # print(*a)   #lfj 18
    fun2(*a)
fun1(a)