动态参数
动态参数,表示没有明确定义参数数量,允许传递任意多个参数的函数。
*args 和 **kwargs
可以通过*args
和**kwargs
进行加参数的访问。
注意,其中args 和 kwargs 只是名称, 重点在 * 。故: *a
*b
**kwa
**bbb
等等的名字都是可以的。
*args
加了星号*的变量名会存放所有未命名的变量参数, 将他们存为元组。前面可以使用明确的参数,*args只能放置在最后一个参数。
def manyargs(val,*args):
print("val : ", val)
print(type(args))
print("共有参数数量: " , len(args))
for v in args:
print(v)
print(args[2]) # > 3
if __name__ == "__main__":
manyargs(1,2,3,4)
val : 1
<class 'tuple'>
共有参数数量: 3
2
3
4
4
上面的例子中,1
,2
,3
,4
四个参数,其中1
传递给val
,剩余的3个参数都加入到了args
中。
**kwargs
**kwarg 将所有传递过来的命名参数保存成为一个字典,同样前面也可以加入其它参数。
def namedargs(one , **kwargs):
print("one=",one)
print("共有参数数量: " , len(kwargs))
print(kwargs) # 输出参数字典
print(type(kwargs))
if __name__ == "__main__":
namedargs(one=1,two=2,three=3)
# 注意,参数必须都是带有key的。
one= 1
共有参数数量: 2
{'two': 2, 'three': 3}
<class 'dict'>
kwargs使用字典的方式将所有命名参数保存起来。