赞
踩
当我们在写程序时,不确定将来要往函数中传入多少个参数,即可使用可变参数(即不定长参数),用*args,**kwargs表示。
*args称之为Non-keyword Variable Arguments,无关键字参数;
**kwargs称之为keyword Variable Arguments,有关键字参数;
当函数中以列表或者元组的形式传参时,就要使用*args;
当传入字典形式的参数时,就要使用**kwargs。
*args示例:
当位置参数与不定长参数一起使用时,先把参数分配给位置参数再将多余的参数以元组形式分配给args:
>>> def test(a, b, *args): c = args print(a, '\n', b, '\n', c) >>> test("this is a", "bbbb", "is c", "09090", "8888") >>> # 当提供的参数多于位置参数时的输出结果: this is a bbbb ('is c', '09090', '8888') >>># 当提供的参数少于位置参数时的输出结果: >>> test("this is a", "bbbb") this is a bbbb () >>>
**kwargs示例:
当传入函数的参数为字典格式时,使用**kwargs。
def test_kwargs(a,b,*args,**kwargs):
print("a=", a)
print("b=", b)
c = args
print("c=", c)
dict = kwargs
print("name=",dict['name'])
print("age=", dict['name'])
test_kwargs(0,1,2,3,name="test1", age=22)
a= 0
b= 1
c= (2, 3)
name= test1
age= 22
除了上述传参方式,还可以直接传入整个字典:
def test_kwargs(a,b,*args,**kwargs):
print("a=", a)
print("b=", b)
c = args
print("c=", c)
dict = kwargs
print("name=",dict['name'])
print("age=", dict['age'])
test_dict = {"name": "test2", "age": 23}
test_kwargs(0,1,2,3,**test_dict)
a= 0
b= 1
c= (2, 3)
name= test2
age= 23
-END-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。