python - 根据Python3中的值传递可选参数

标签 python python-3.x parameters boto3

我有一个参数,可以是 None 或 String。如果它是 None,我无法将其作为参数传递,因为该库不支持 None 值也不支持空字符串。该库也不接受字典作为输入。另一方面,我真的不想写这样一个可怕的替代方案!

if lifecycle_policy_name:
    response = client.create_notebook_instance(
        NotebookInstanceName=NotebookInstanceName,
        InstanceType=InstanceType,
        SubnetId=SubnetId,
        SecurityGroupIds=SecurityGroupIds,
        RoleArn=RoleArn,
        Tags=Tags,
        DirectInternetAccess='Disabled',
        VolumeSizeInGB=10,
        RootAccess='Disabled',
        KmsKeyId=kms_key.get('KeyId'),
        LifecycleConfigName=lifecycle_policy_name
    )
else:
    response = client.create_notebook_instance(
        NotebookInstanceName=NotebookInstanceName,
        InstanceType=InstanceType,
        SubnetId=SubnetId,
        SecurityGroupIds=SecurityGroupIds,
        RoleArn=RoleArn,
        Tags=Tags,
        DirectInternetAccess='Disabled',
        VolumeSizeInGB=10,
        RootAccess='Disabled',
        KmsKeyId=kms_key.get('KeyId'),
    )

正如您所猜测的,这是调用 Boto3 api。

最佳答案

您可以尝试使用关键字参数扩展:

kwargs = dict(
    NotebookInstanceName=NotebookInstanceName,
    InstanceType=InstanceType,
    SubnetId=SubnetId,
    SecurityGroupIds=SecurityGroupIds,
    RoleArn=RoleArn,
    Tags=Tags,
    DirectInternetAccess='Disabled',
    VolumeSizeInGB=10,
    RootAccess='Disabled',
    KmsKeyId=kms_key.get('KeyId'),
)

if lifecycle_policy_name:
    kwargs["LifecycleConfigName"] = lifecycle_policy_name
response = client.create_notebook_instance(
    **kwargs
)

关于python - 根据Python3中的值传递可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270103/

相关文章:

python - np.random.normal 的非随机采样版本

python - netloc 是什么意思?

python-3.x - Twisted 在 Python3 上的真实现状是什么?

python - 如何从 Python 3 脚本创建独立的可执行文件?

python - 访问对象的对象属性数组会在 python 中给出属性错误

shell - awk 脚本未列出特定列

C++ ShellExecuteEx 不会通过不从该 exe 生成输出来执行带参数的 exe

python - pip METADATA Requires-Dist 中的 `extra` 标志是如何使用的?

python - nginx+paste 能在生产环境中运行吗?

c++ - C/C++ 中数组的参数传递和作用域