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

时间:2016-06-13 07:37:05

标签: python

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

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

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

这是一种做法。

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

但是,我拥有的实际示例(实际上是boto3 dynamodb查询函数)具有许多可选参数,我想在某些条件下指定。

如果我有选择的话,我不想做以下事情:

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

我打电话的功能不接受''也没有作为其可选参数的输入。

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

2 个答案:

答案 0 :(得分:4)

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

使用关键字参数的字典。

答案 1 :(得分:0)

你可以使用lambda

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