def demo(*args, **kwargs):
print(args) # *args 接受元祖为参数
print(kwargs) # **kwargs 接受字典为参数
print("args传入参数数量{}".format(len(args)))
print("kwargs传入参数数量{}".format(len(kwargs)))
if __name__ == '__main__':
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}
# 01 如果直接这样调用,传入的所有参数都算为元祖
print("直接调用,所有参数当做元组参数")
demo(gl_nums, gl_dict)
print("-------------------")
# 如果不使用拆包,我们要这样调用才能正确使用函数
print("如果不使用拆包,我们要这样调用才能正确使用函数")
demo(1, 2, 3, name='小明', age=18)
print("-------------------")
print("如果这样调用,虽然打印出来是一样的,但是传入的元祖参数实际才有一个")
demo(gl_nums, name='小明', age=18)
print("-------------------")
print("拆包调用")
demo(*gl_nums, **gl_dict)
print("-------------------")
输出:
直接调用,所有参数当做元组参数
((1, 2, 3), {'name': '小明', 'age': 18})
{}
args传入参数数量2
kwargs传入参数数量0
-------------------
如果不使用拆包,我们要这样调用才能正确使用函数
(1, 2, 3)
{'name': '小明', 'age': 18}
args传入参数数量3
kwargs传入参数数量2
-------------------
如果这样调用,虽然打印出来是一样的,但是传入的元祖参数实际才有一个
((1, 2, 3),)
{'name': '小明', 'age': 18}
args传入参数数量1
kwargs传入参数数量2
-------------------
拆包调用
(1, 2, 3)
{'name': '小明', 'age': 18}
args传入参数数量3
kwargs传入参数数量2
-------------------