在python中使用动态参数列表调用函数

时间:2012-08-09 10:47:47

标签: python web.py

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

示例代码:

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

如何使用列表或字典调用web.input?我坚持:

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

3 个答案:

答案 0 :(得分:14)

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

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

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

web.input(**my_args)

你可以用列表做同样的事情:

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

相当于

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

答案 1 :(得分:10)

找到here相关文档

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

答案 2 :(得分:4)

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

keyword_args = {
   "name": None,
   "age": None,
   ...
}
web.input(**keyword_args)