关于web.py:call函数,其中包含python中的动态参数列表

call function with a dynamic list of arguments in python

我需要调用一个函数,该函数处理可以具有默认值的参数列表:

示例代码:

1
web.input(name=None, age=None, desc=None, alert=None, country=None, lang=None)

如何使用列表或字典调用这样的web.input?我被困在:

1
getattr(web, 'input').__call__()


1
2
3
my_args = {'name': 'Jim', 'age': 30, 'country': 'France'}

getattr(web, 'input')(**my_args) # the __call__ is unnecessary

您也不需要使用getattr,当然您可以直接调用方法(如果您不想从字符串中查找属性):

1
web.input(**my_args)

您可以对列表执行相同的操作:

1
2
my_args_list = ['Jim', 30, 'A cool person']
getattr(web, 'input')(*my_args_list)

等于

1
getattr(web, 'input')('Jim', 30, 'A cool person')

在这里查找相关文档

1
2
web.input(*list)
web.input(**kwargs)


可以使用*args和**kwargs表示法动态传递元组(位置)和字典(命名)参数。下一个代码的作用将与您的web.input(…)相同。

1
2
3
4
5
6
keyword_args = {
  "name": None,
  "age": None,
   ...
}
web.input(**keyword_args)