我有一个关于* args和** kwargs的问题。我知道当你不知道将多少个参数传递给函数时它们被使用。但是当我不知道那些是什么时,它能否代替一些实际需要的论点?
如果有功能:
[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]
如果我没有该函数采用的参数,我可以简单地使用functionName(* args,** kwargs) - 或functionName(* args)?我注意到有些人倾向于这样使用它 - 但我不确定这是不是*和**在python中工作?
答案 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)