天天看點

python中的兩種拆包示範

注:以下操作是在python控制台下執行的

*

元組中的拆包

t=(1,2,3)
print(t)
(1, 2, 3)
print(*t)
1 2 3

           

函數中的拆包

def test(a,*args):
...     print(a)
...     print(args)
...     print(*args)
... 
test(1,2,3,4,5)
1
(2, 3, 4, 5)
2 3 4 5
test(1,(2,3,4,5))
1
((2, 3, 4, 5),)
(2, 3, 4, 5)
           
  • args将多餘的參數儲存在tuple中
  • *args則是将tuple中的數取出

**

dict中的拆包

print(d)
{'a': 3, 'b': 4, 'c': 5}
print(*d)
a b c
print(**d)# **d不支援輸出
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'a' is an invalid keyword argument for print()
           

函數中的拆包

def test(a,**kwargs):
...     print(a)
...     print(kwargs)
...     print(*kwargs)
...     test2(**kwargs)# **kwargs不支援輸出,至于是什麼作用檢視替代操作大概就能明白
... 
def test2(m,n):
...     print(m,n)

test(1,m=11,n=99)
1
{'m': 11, 'n': 99}
m n
11 99

           
  • kwargs将指定值的參數儲存到dict
  • *kwargs儲存參數變量名
  • **kwargs不支援輸出,作用見替代操作(下)

**替代操作

book=Book.objects.create(**dict_data)# 拆包操作
book=Book.objects.create(title=title,publish=publish,comment=comment,read=read)# 這樣寫也可以