簡體   English   中英

如何在python中返回函數參數args,kwargs

[英]How can I return function arguments args, kwargs in python

我想要一個用戶指定的函數來將函數參數返回給另一個函數。

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 {})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM