使用* args和** kwargs代替函数的参数

时间:2017-07-03 04:28:51

标签: python function args

我有一个关于* args和** kwargs的问题。我知道当你不知道将多少个参数传递给函数时它们被使用。但是当我不知道那些是什么时,它能否代替一些实际需要的论点?

如果有功能:

[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]

如果我没有该函数采用的参数,我可以简单地使用functionName(* args,** kwargs) - 或functionName(* args)?我注意到有些人倾向于这样使用它 - 但我不确定这是不是*和**在python中工作?

2 个答案:

答案 0 :(得分:0)

是的,你可以同时使用* args和** kwargs,但是订单很重要你可以有here的想法。如果你想在函数中使用所有这两个,那么顺序是

some_func(*args,**kwargs)

答案 1 :(得分:0)

致电function(*args)相当于function(arg[0], arg[1],...,arg[N])

如果您不知道函数期望的参数,只需调用它并查看异常:

>>> def f(a,b,c):
...     pass
...
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() missing 3 required positional arguments: 'a', 'b', and 'c'

或者您可以使用互动help

>>> help(f)
Help on function f in module __main__:

f(a, b, c)