天天看点

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)# 这样写也可以