有条件地将命名关键字参数传递给函数



我不确定我的问题中是否使用了正确的措辞,但我遇到的情况是,我调用一个函数并将值传递给其命名关键字参数之一,只有当我有它的值时。我目前如何做到这一点的简化示例:

var_1 = data.get("var_1", None)
if var_1:
some_function(some_arg=var_1)
else:
some_function()

该函数some_function()不接受将some_arg设置为 None ,因此如果我有有效的值,我只能使用命名参数调用该函数。

上述对我来说不太理想的原因是,我所做的实际函数调用有一堆 (5+( 我设置的命名参数。这会导致重复大多数相似的函数调用,这些函数调用仅与一个参数不同。

有没有更好的方法/更多的 Python 方法来做到这一点?我希望我可以调用该函数并设置我可能希望传递的所有可能的命名参数,但在运行时,只传入我实际具有某些内容的值。

如果很重要,函数调用是针对 AWS Python 开发工具包 (Boto3( 的,因此我无法更改函数的行为。

你能做的是:

var_1 = data.get("var_1", None)
fun_kwargs = {'some_arg': var_1} if var_1 else {}
some_function(**fun_kwargs)

如果您有多个参数,则可以执行以下操作:

fun_kwargs = {}
if var1: fun_kwargs['some_arg1'] = var_1
if var2: fun_kwargs['some_arg2'] = var_2
if var3: fun_kwargs['some_arg3'] = var_3
some_function(**fun_kwargs)

相关内容

  • 没有找到相关文章