如何在Python的另一个函数中找出特定函数的自变量的默认值?
问题内容:
假设我们有一个像这样的函数:
def myFunction(arg1='a default value'):
pass
我们可以使用自省来找出myFunction()
使用using的参数的名称myFunction.func_code.co_varnames
,但是如何找出默认值arg1
('a default value'
在上面的示例中)呢?
问题答案:
除了扎根于函数的属性之外,还可以使用inspect模块提供一个稍微友好的界面:
对于Python 3.x解释器:
import inspect
spec = inspect.getfullargspec(myFunction)
然后spec是一个FullArgSpec
具有诸如args
和属性的对象defaults
:
FullArgSpec(args=['arg1'], varargs=None, varkw=None, defaults=('a default value',), kwonlyargs=[], kwonlydefaults=None, annotations={})
这些属性中的某些属性在Python
2上不可用,因此如果您必须使用旧版本,inspect.getargspec(myFunction)
则将获得不具有Python
3功能的相似值(getargspec
也可在Python 3上使用,但自Python 3.0起已弃用,因此请不要使用它) :
import inspect
spec = inspect.getargspec(myFunction)
然后spec是一个ArgSpec
具有诸如args
和属性的对象defaults
:
ArgSpec(args=['arg1'], varargs=None, keywords=None, defaults=('a default value',))