背景
记得之前在工作的时候用Django写web项目的时候,插入数据库的时候使用过这个功能,但是当时并不知道是什么原因,学到这个,豁然开朗.
Code
# 拆包 值保存在元组*args.键值对保存在字典**kwargs
def demo(*args, **kwargs):
print(args)
print(kwargs)
nums = (1, 2, 3)
attribute = {"name": "song", "age": 18}
demo(nums, attribute)
"""
如果不进行拆包的话:会把所有的值都传给元组*args
((1, 2, 3), {'name': 'song', 'age': 18})
{}
"""
demo(*nums, **attribute)
"""
(1, 2, 3)
{'name': 'song', 'age': 18}
"""
# 需要注意的是:属性没有引号,不要写成"name"="song"
# 这样的表示方式和上面的其实一样,值传给元组*args.键值对传给字典**kwargs.
demo(1, 2, 3, name='song', age=18)
"""
(1, 2, 3)
{'name': 'song', 'age': 18}
"""
结论
拆包的存在的确方便了很多.
勤能补拙