Python中的*args和**kwargs
定义
*args和**kwargs是编程人员约定的变量名字,args是arguments的缩写,表示位置参数;kwargs是keyword arguments的缩写,表示关键字参数。- 这其实就是 Python 中可变参数的两种形式, 并且
*args必须放在**kwargs的前面, 因为位置参数在关键字参数的前面 *args和**kwargs长度可变, 可以为0
实例
def func(*args, **kwargs):
print(args, type(args))
print(args[1])
print(kwargs, type(kwargs))
print(kwargs.get('c'))
func('a', [1, 2, 'a'], c='c', d='d')
('a', [1, 2, 'a']) <class 'tuple'>
[1, 2, 'a']
{'c': 'c', 'd': 'd'} <class 'dict'>
c
可以理解为有两个参数分别是:
args=('a', [1, 2, 'a'])
kwargs={'c': 'c', 'd': 'd'}
然后对其进行了解包操作之后传入函数, 也就是*和**
解包
把容器类型list、tuple、dict、set中的元素拆开
**{'c': 'c', 'd': 'd'}就是拆成'c'='c'和'd'='d'两个元素
*('a', [1, 2, 'a']) 就是拆成 'a' 和 [1, 2, 'a'] 两个元素
当然还能接着拆[1, 2, 'a']这个元素,*('a', *[1, 2, 'a'])拆成'a' 、1、2、'a'四个元素
在上面的例子中
func('a', [1, 2, 'a'], c='c', d='d')与func(*('a', [1, 2, 'a']), **{'c': 'c', 'd': 'd'})可以近似理解为等价
posted on 2024-01-11 17:38 ishuangjin 阅读(311) 评论(0) 收藏 举报
浙公网安备 33010602011771号