如果不为null,则将参数传递给方法

时间:2018-10-14 23:00:14

标签: python

仅在参数不为null时,如何在python中包含参数?如果我将有效颜色传递给方法doSomething,则以下代码可以正常工作。现在color有时为null(就像java中的null,我猜它在Python中为None或nil),而在printColor抛出异常时。我如何避免这种情况?

Invalid type for parameter packageNamespace, value: None

response = client.printColor(
            color = color # Only include this param is not None/Null
   )

response = client.printColor() # this works

1 个答案:

答案 0 :(得分:1)

您可以从字典中过滤掉None

kwargs = {
    'color': color,
    ⋮
}

response = client.printColor(**{k: v for k, v in kwargs.items() if v is not None})

或者做与函数相同的事情:

def none_to_default(**kwargs):
    return {k: v for k, v in kwargs.items() if v is not None}


client.printColor(**none_to_default(
    color=color,
    ⋮
))

但是,这可能不是解决该问题的最佳方法。如果您可以显示真实的功能[文档],那将是理想的选择。