我想将传递给函数(func1
)的所有参数作为func2
内另一个函数(func1
)的参数传递
这可以通过调用*args, *kwargs
中的func1
并将其传递给func2
来完成,但还有其他方法吗?
最初
def func1(*args, **kwargs):
func2(*args, **kwargs)
但如果我的func1签名是
def func1(a=1, b=2, c=3):
如何在不使用
的情况下将它们全部发送到func2def func1(a=1, b=2, c=3):
func2(a, b, c)
有没有javascript callee.arguments
中的方法?
答案 0 :(得分:48)
明确比隐式好,但如果你真的不想输入几个字符:
def func1(a=1, b=2, c=3):
func2(**locals())
locals()
是所有局部变量,所以在调用func2
之前你不能设置任何额外的变量,否则它们也会被传递。
答案 1 :(得分:12)
如果func1的参数只是关键字参数,你可以这样做:
def func1(a=1, b=2, c=3):
func2(**locals())
答案 2 :(得分:0)
正如其他人所说,如果locals()
在调用func1()
之前创建了新变量,则使用func2()
可能会使您传递的变量超出预期。
这可以通过首先调用locals()
来解决,就像这样:
def func1(a=1, b=2,c=3):
par = locals()
d = par["a"] + par["b"]
func2(**par)