问题描述
def f(arg1,arg2=0,otherargs=...):
# Does something.
def g(*): # Or however best to parameterize.
arg1 = # Extract arg1 value.
arg2 = # Extract arg2 value,if provided.
# Do something with arg1 and arg2.
f_result = f(arg1,arg2,otherargs)
# Do something else with f_result and return.
这可能吗?
解决方法
这可以通过 inspect.getcallargs
实现:它接受函数、args 和 kwargs,并返回参数字典。使用上面定义的 f 和 g,这看起来像:
import inspect
def f(arg1,arg2=0,otherargs=...):
# Does something.
return
def g(*args,**kwargs): # Or however best to parameterize.
kwargs = inspect.getcallargs(f,*args,**kwargs)
arg1 = kwargs["arg1"] # Extract arg1 value.
arg2 = kwargs["arg2"] # Extract arg2 value,if provided.
otherargs = kwargs["otherargs"]
# Do something with arg1 and arg2.
f_result = f(arg1,arg2,otherargs)
# Do something else with f_result and return.