roo*_*esh 62 python arguments function
我希望将传递给函数(func1
)的所有参数作为参数传递给另一个函数(func2
)里面func1
这可以*args, *kwargs
在被调用中完成func1
并传递给它们func2
,但是还有另一种方法吗?
本来
def func1(*args, **kwargs):
func2(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但如果我的func1签名是
def func1(a=1, b=2, c=3):
Run Code Online (Sandbox Code Playgroud)
如何在不使用的情况下将它们全部发送到func2
def func1(a=1, b=2, c=3):
func2(a, b, c)
Run Code Online (Sandbox Code Playgroud)
有没有像在JavaScript中的方式callee.arguments
?
Joc*_*zel 54
显式优于隐式,但如果你真的不想输入几个字符:
def func1(a=1, b=2, c=3):
func2(**locals())
Run Code Online (Sandbox Code Playgroud)
locals()
都是局部变量,所以你不能在调用之前设置任何额外的变量,func2
否则它们也会被传递.
小智 13
如果func1的参数只是关键字参数,您可以这样做:
def func1(a=1, b=2, c=3):
func2(**locals())
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,如果在调用之前创建新变量locals()
,则 using 可能会导致您传递比预期更多的变量。func1()
func2()
可以通过locals()
首先调用并创建其内容的副本来避免这种情况,如下所示:
def func1(a=1, b=2,c=3):
parameters = locals().copy()
d = parameters ["a"] + parameters ["b"]
func2(**parameters) #the value of `d` is not passed to func2.
Run Code Online (Sandbox Code Playgroud)
func2(**locals())
如果我们像这样进行函数调用,d
就会将其添加为参数。
归档时间: |
|
查看次数: |
29202 次 |
最近记录: |