赞
踩
在Python代码中,经常见到函数中有*args和**kwargs写法,它们都起到了可选参数(optional arguments)的作用。那么具体怎么使用呢?且看下文细细分解。
在了解*args和**kwargs的作用之前,首先要理解*和**在Python中的使用。*和**主要有三方面的用途,(一)是对可迭代对象进行拆分,(二)可变变量的赋值,(三)函数的可选参数标志。[1]
在Python中,一切内置了__iter__方法的对象都是可迭代对象,典型的可迭代对象包括元组(tuple)、列表(list)、集合(set)、字典(dict)等等。这种拆解主要运用在函数的参数语境中,以print函数为例,以下5个表达式是完全等价的:
- print("a", "b", "c")
- print(*("a", "b", "c")) # 元组
- print(*["a", "b", "c"]) # 列表
- print(*{"a", "b", "c"}) # 集合
- print(*{"a": 1, "b": 2, "c": 3}) # 注意:对字典拆解时只拆解key
- print(*"abc") # 注意:字符串也是可迭代对象
输出结果完全一样:
- a b c
- a b c
- a b c
- a b c
- a b c
- a b c
除了函数参数语境,赋值语境下也可以对可迭代对象进行拆分,如
- a = *range(3),
- b = *range(3), 3
- c =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。