在 boto3 调用中选择性地传递 kwargs

问题描述

有没有办法根据变量的值有选择地在 boto3 调用中传递 kw 参数?

例如在函数调用
client.update_server(ServerId=server_id,Protocols=protocols,SecurityPolicyName=policy)

如果协议为空/无,我的电话应该是 client.update_server(ServerId=server_id,SecurityPolicyName=policy)

如果政策是空的/无我的电话应该是 client.update_server(ServerId=server_id,Protocols=protocols)

这可以在 python (3.7x) 中实现吗?

解决方法

您可以使用 kwargs,正如您所提到的。只需创建一个辅助函数并解析最初传入的 kwargs 以过滤掉 None 值。毕竟,kwargs 只是一本字典。

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