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

时间:2010-06-28 23:41:30

标签: python function arguments

我想将传递给函数(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中的方法?

3 个答案:

答案 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)