2010-06-28 152 views
42

我想传递给函数(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

+0

可能相关:http://stackoverflow.com/questions/1136673/when-should-i-use-varargs -in-设计-A-蟒蛇-API – 2010-06-28 23:44:13

+0

我看不出这可能是有用的... – jcao219 2010-06-28 23:48:07

+0

它不是那么有用,但有时我写一个函数有很多参数的个数,和无聊在复制他们与过度。 – roopesh 2010-06-29 00:57:46

回答

33

明确的是比隐更好,但如果你真的不想键入几个字符:

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

locals()都是局部变量,所以你不能调用func2之前设置任何额外的增值经销商或者他们也会得到通过。

+5

这将会有如果你在调用'func2'之前创建了局部变量,那么它们也会被传递给'func2'。 – 2010-06-29 00:12:12

+2

也许你可以在函数的开始处复制当地人? – Bwmat 2010-06-29 00:45:51

+0

雅,复制很好,我猜。 – roopesh 2010-06-29 00:56:28

9

提供的参数FUNC1只有关键字参数,你可以这样做:

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