如何在python中返回函数参数args,kwargs

时间:2017-02-13 17:29:36

标签: python python-3.x

我想要一个用户指定的函数将函数参数返回给另一个函数。

Uncaught TypeError: Cannot read property 'pid' 
这可能吗?目前,如果我从def wrapper(func, arg_func, iters=10): for i in range(iters): args, kwargs = arg_func() f(*args, **kwargs) 返回一个没有任何arg_func的元组,那么它会抱怨解压的参数太多。

kwargs

2 个答案:

答案 0 :(得分:1)

你的arg_func需要返回两个元素的序列,第一个是序列本身,第二个是字典。

以下是调用wrapper()的一种方法。请注意,返回值的第一个元素是元组(random.uniform(0.0, 1.0),),第二个元素是字典{'flush':True}。这些值只是示例。使用适合您代码的任何序列和字典。

wrapper(func=print,
        arg_func=lambda: ((random.uniform(0.0, 1.0),), {'flush':True}))

这是另一个例子。 arg_func返回两个位置参数,没有关键字参数:

wrapper(func=print, arg_func=lambda: (("Hello","World"), {}))

答案 1 :(得分:0)

你可以做一些额外的处理。像

这样的东西
args, *more_args = arg_func()
kwargs = more_args[0] if more_args else {}

(如果你不使用3.x,你需要做类似

的事情
x = arg_func()
a,k = (x[0] if len(x) else []), (x[1] if len(x) > 1 else {})