Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:检查函数';s的默认参数_Python_Python 3.x - Fatal编程技术网

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)
将始终为您提供函数签名;是否存在文档字符串并不重要。所以这在一般情况下是有效的。