Python 将函数的所有参数传递给另一个函数

Python 将函数的所有参数传递给另一个函数,python,function,arguments,Python,Function,Arguments,我想将传递给函数(func1)的所有参数作为参数传递给func1中的另一个函数(func2) 这可以通过调用的func1中的*args、*kwargs来完成,并将它们传递给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):

我想将传递给函数(
func1
)的所有参数作为参数传递给
func1
中的另一个函数(
func2
) 这可以通过调用的
func1
中的
*args、*kwargs
来完成,并将它们传递给
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
中的被调用方参数类似?

显式优于隐式,但如果您确实不想键入几个字符:

def func1(a=1, b=2, c=3):
    func2(**locals())

locals()
都是局部变量,因此在调用
func2
之前不能设置任何额外的变量,否则它们也会被传递。

如果func1的参数只是关键字参数,则可以执行以下操作:

def func1(a=1, b=2, c=3):
    func2(**locals())

正如其他人所说,如果
func1()
在调用
func2()
之前创建了新变量,那么使用
locals()
可能会导致传递的变量超过预期

首先调用
locals()
可以避免这种情况,如下所示:

def func1(a=1,b=2,c=3): PAL= Load() d=标准杆[“a”]+标准杆[“b”] 职能2(**par)
可能相关:我不认为这有什么用处……它并不是那么有用,但有时我编写一个包含大量参数的函数,厌倦了一遍又一遍地复制它们。@jcao219当编写不关心函数的泛型装饰器时,这很有用args@jcao219-或者,如果要将公共功能提取到另一个功能,您不知道如何更改现有的外部调用接口这将有一个缺陷,即如果您在调用
func2
之前创建了局部变量,那么它们也将被传递到
func2
。也许您可以在函数的开头复制局部变量?现在我记得读过关于
locals
。我想得太多了
vars()
,记不起
locals()
。我应该读过这些文件。我猜vars()也可以使用。这对类函数不起作用,因为它会为selfOuch获取多个值,我讨厌这个。原因是
locals()
是一个错误的概念-您希望传递“所有参数”而不是“所有局部变量”。所有无害的更改——比如在这行之前添加一个局部变量,或者将一个函数移动为一个方法,或者反之亦然——都可能破坏这段代码。更重要的是,读者必须挠头才能弄明白。