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