什么情况下需要用到拆包?
当我们的函数需要传入不定长参数或者多个参数时,为了方便我们可以将参数放在list/tuple/dict里面,然后一次性传给函数。比如下面这个求和函数
def nums_sum(*agrs):
sum = 0
for i in agrs:
sum += i
return sum
list拆包
现在将需要传入的参数放在一个list里面,想要将这个list传给函数,那么就需要将这个list拆成一个一个的传给函数了,我们可以这样做
list1 = [1,2,3]
nums_sum(*list1)
# 结果和直接传参是一样的
nums_sum(1,2,3)
tuple拆包
上面拆了list,下面拆tuple也是一样的处理
tuple1 = (1,2,3,4,5)
nums_sum(*tuple1)
# 结果和直接传参是一样的
nums_sum(1,2,3,4,5)
字典拆包 - 给函数传参。 key=value
def newdict(**kwargs):
print(kwargs)
# 第一种传参,直接传 key=value
newdict(name="xj", age=10)
# 第二种传参,将mydict拆包传给函数, ** 表示拆字典
mydict = {"name":"xj", "age":10}
newdict(**mydict)
# 返回结果是一样,如下
{'name': 'xj', 'age': 10}
下面是一个输入参数然后拆包的实例
def nums_sum(*agrs):
sum = 0
for i in agrs:
sum += i
return sum
nums = input('请输入需要求和的数字,用逗号隔开:') # 结果为 2,3,4,5 这种
newlist = []
for i in nums.split(','):
newlist.append(float(i)) # 将输入的字符串类型的数字转换为float类型,添加到list中
print(nums_sum(*newlist)) # 将list拆包传给函数