Python:检查函数';s的默认参数
给定一个函数(例如,Python:检查函数';s的默认参数,python,python-3.x,Python,Python 3.x,给定一个函数(例如,create_instances),它接受许多关键字参数,我如何知道哪些参数有默认值,以及默认值到底是什么 为了提供完整的上下文,我使用了boto3 AWS Python API: import boto3 ec2 = boto3.resource('ec2') ec2.create_instances( ... ) 例如,create\u instances函数接受一个参数MaxCount,但我想知道它是否有默认值。我环顾四周,但没有发现任何有用的东西 create\u
create_instances
),它接受许多关键字参数,我如何知道哪些参数有默认值,以及默认值到底是什么
为了提供完整的上下文,我使用了boto3 AWS Python API:
import boto3
ec2 = boto3.resource('ec2')
ec2.create_instances( ... )
例如,create\u instances
函数接受一个参数MaxCount
,但我想知道它是否有默认值。我环顾四周,但没有发现任何有用的东西
create\u instance
的文档位于inspect。getfullargspec(ec2.create\u instance)
通常会为您提供所需的一切。对齐右侧的参数
和默认值
。例如:
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
中,它将由函数的代码处理,因此在函数签名中找不到它。刚刚找到,OP试图以一种可以从外部检查其默认值的方式编写函数。所以我想,一般来说,检查函数的默认参数是不可能的?如果有人能确认就好了。help(ec2.create_实例)
显示了什么吗?@9769953是的,它显示了网站上显示的完整文档。我刚刚在那个文档中找到了:type MaxCount:integer:param MaxCount:*[必需]***
。谢谢仍然想知道一般情况下是否可以这样做(即在没有文档的情况下)。如果参数只是**kwargs
,您应该查看源代码以了解如何处理。但在本例中,文档实际上说明了某些参数的默认值。从技术上讲,此函数没有默认参数。help(function)
将始终为您提供函数签名;是否存在文档字符串并不重要。所以这在一般情况下是有效的。