什么情況下需要用到拆包掀宋?
當我們的函數需要傳入不定長參數或者多個參數時雳刺,為了方便我們可以將參數放在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拆包傳給函數