我想将传递给函数(
func1
)的所有参数作为参数传递给func2
内的另一个函数(func1
)
这可以通过被调用的 *args, *kwargs
中的 func1
并将它们传递给 func2
来完成,但是还有其他方法吗?
本来
def func1(*args, **kwargs):
func2(*args, **kwargs)
但是如果我的 func1 签名是
def func1(a=1, b=2, c=3):
如何将它们全部发送到 func2,而不使用
def func1(a=1, b=2, c=3):
func2(a, b, c)
有没有像javascript那样的方法
callee.arguments
?
显式优于隐式,但如果您真的不想输入几个字符:
def func1(a=1, b=2, c=3):
func2(**locals())
locals()
都是局部变量,所以在调用func2
之前你不能设置任何额外的变量,否则它们也会被传递。
如果 func1 的参数只是关键字参数,你可以这样做:
def func1(a=1, b=2, c=3):
func2(**locals())
正如其他人所说,如果
locals()
在调用 func1()
之前创建新变量,则使用 func2()
可能会导致您传递比预期更多的变量。
这可以通过首先调用
locals()
来规避,如下所示:
def func1(a=1, b=2,c=3):
parameters = locals()
d = parameters ["a"] + parameters ["b"]
func2(**par) #the value of `d` is not passed to func2.
如果我们像
func2(**locals())
那样进行函数调用,那么d
就会被添加为参数。