首页 文章

如何在Python中指定函数参数?

提问于
浏览
0

在这个例子中,我有一个带有可选参数的函数 . 例如 .

def func_x(arg_foo='foo'):
  # Do something
  pass

在调用函数时,我只想在某些条件下指定参数 .

这是一种方法 .

if cond == True:
  func_x(arg_foo='coo')
else:
  func_x()

但是,我拥有的实际示例(实际上是一个boto3 dynamodb查询函数)具有 many 可选参数,我想在某些条件下指定它们 .

如果我有选择,我宁愿不做以下事情:

if condition_a:
  long_func_call(many_optional_argument_names=many_optional_argument_values)
elif condition_b:
  long_func_call(many_optional_argument_names=many_optional_argument_values)
elif condition_c:
  long_func_call(many_optional_argument_names=many_optional_argument_values)
else:
  long_func_call(many_optional_argument_names=many_optional_argument_values)

我尝试过以下但是没有用:

long_func_call(
  arg1='' if cond_a else 'value',
  arg2=None if cond_b else 'value'
)

我正在调用的函数不接受''和None作为其可选参数的输入 .

有没有办法在某些条件下指定可选参数?

2 回答

  • 4
    kwargs = {}
    if condition_a:
        kwargs['arg_a'] = value_a
    if condition_b:
        kwargs['arg_b'] = value_b
    ...
    long_func_call(**kwargs)
    

    使用关键字参数的字典 .

  • 0

    你可以使用lambda

    if cond:
      func = lambda:func_x(arg_foo='coo')
    else:
      func = func_x
    func()
    

相关问题