1. 在函数定义处,*args表示变长非关键字参数
def demo_1(*args):
print(args)
demo_1(1,2,3)
函数的输出为:
(1, 2, 3)
可以看出args表示的是一个元组,在函数调用的时候,传入多少个参数都可(不传也行)
其简单应用可以看下例:
def test_var(formalarg,*args):
print("formal_arg:",formalarg)
for arg in args:
print("var_arg:",arg)
test_var(1,2,3,4)
输出的结果为:
formal_arg: 1
var_arg: 2
var_arg: 3
var_arg: 4
2. 在函数定义处,**kwargs表示变长关键字参数
def demo_2(**kwargs):
print(kwargs)
demo_2(k=1,w=2)
函数的输出为:
{'k': 1, 'w': 2}
可以看出kwargs表示的是一个字典,函数调用的时候,传入多少个参数都行(不传也行)。
其简单应用如下例:
def test_var(formalarg,**kwargs):
print("formal_arg:",formalarg)
for k,v in kwargs.items():
print("%s=>%s"%(k,v))
test_var(1,a=1,b=2,c=3)
输出为:
formal_arg: 1
a=>1
b=>2
c=>3
3. 变长参数还可以在函数调用的时候使用
如下例:
def test_var_args_call(arg0,arg1, arg2, arg4):
print("arg0:",arg0)
print("arg1:", arg1)
print("arg2:", arg2)
print("arg4:", arg4)
args=(1,2)
kwargs={"arg4":4}
test_var_args_call(0,*args,**kwargs)
输出为:
arg0: 0
arg1: 1
arg2: 2
arg4: 4
对字典解包的时候,字典中的键要为函数中包含的关键字参数,否则会出错。
4. *args还可以在赋值的时候使用
也是代表变长的元素,不过,此时,args的类型为列表
In [19]: a,*b,c=list(range(5))
In [20]: b
Out[20]: [1, 2, 3]