【问题标题】:call function with a dynamic list of arguments in python在python中使用动态参数列表调用函数
【发布时间】:2012-08-06 13:51:18
【问题描述】:

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

示例代码:

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

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

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

【问题讨论】:

标签: python web.py


【解决方案1】:
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')

【讨论】:

    【解决方案2】:

    找到here相关文档

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

    【讨论】:

    • @CasperDeseyne:如果你得到了你想要的答案,那么标记它accepted是公认的做法。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 2018-03-06
      • 2010-10-23
      • 1970-01-01
      • 2020-03-02
      • 2010-10-15
      • 2013-05-21
      相关资源
      最近更新 更多