当前位置: 代码迷 >> python >> 如何在python中返回函数参数args,kwargs
  详细解决方案

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

热度:85   发布时间:2023-06-13 15:19:04.0

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

def wrapper(func, arg_func, iters=10):
    for i in range(iters):
        args, kwargs = arg_func()
        f(*args, **kwargs)

这可能吗? 目前,如果我从arg_func返回一个没有任何kwargs的元组,那么它会抱怨解包的参数太多。

wrapper(func=print, arg_func=lambda: (random.uniform(0.0, 1.0),))

ValueError: not enough values to unpack (expected 2, got 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"), {}))

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

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 {})
  相关解决方案