python 方法中的参数 *args 与 **kwargs
*args
*args 传入多个非键值对的参数列表
**kwargs
**kwargs 传入多个键值对的参数字典
*args和**kwargs的传递
当需要往其他方法传递 *args 和 ** kwargs 时
需要使用 * 和 ** 进行拆包
代码示例
def test1(hours, minutes, *args, **kwargs):
print('!!! test1 start !!!')
print(hours, minutes)
print(args)
print(kwargs)
print('!!! test1 end !!!')
def test2(hours, minutes, *args, **kwargs):
print('!!! test2 start !!!')
print(hours, minutes)
print(args)
print(kwargs)
test1(hours, minutes, args, kwargs) # 不带 * 是 args 列表传入 kwargs 字典传入
test1(hours, minutes, *args, **kwargs) # 带 * 是 args 和 kwargs 拆开传入
print('!!! test2 end !!!')
if __name__ == '__main__':
test2(14, 13, 2021, 5, 20, country='China', province='Hubei', city='Wuhan')
!!! test2 start !!!
14 13
(2021, 5, 20)
{'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'}
!!! test1 start !!!
14 13
((2021, 5, 20), {'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'})
{}
!!! test1 end !!!
!!! test1 start !!!
14 13
(2021, 5, 20)
{'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'}
!!! test1 end !!!
!!! test2 end !!!

浙公网安备 33010602011771号