Python:检查函数的默认参数

时间:2019-01-16 07:29:37

标签: python python-3.x

给出一个带有许多关键字参数的函数(例如create_instances),我如何知道哪些参数具有默认值,以及默认值到底是什么?


为了提供完整的上下文,我使用了boto3 AWS Python API:

import boto3
ec2 = boto3.resource('ec2')
ec2.create_instances( ... )

例如,create_instances函数采用参数MaxCount,但是我想知道它是否具有默认值。我在inspect module中环顾四周,但没有发现任何有用的东西。

create_instances的文档位于https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.ServiceResource.create_instances

1 个答案:

答案 0 :(得分:1)

inspect.getfullargspec(ec2.create_instance)通常应该为您提供所需的一切。在右侧对齐argsdefaults。例如:

def foo(a, b=3, *c, d=5):
    m = a + b
    return m

argspec = inspect.getfullargspec(ec2.create_instance)
{**dict(zip(argspec.args[-len(argspec.defaults):], argspec.defaults)),
 **argspec.kwonlydefaults}
# => {'b': 3, 'd': 5}

如@ 9769953所说,如果参数绑定在**kwargs中,则该参数由函数的代码处理,因此在函数签名中找不到。

相关问题