获取非默认的函数参数

时间:2014-06-18 08:06:17

标签: python

我有这个功能:

def func(a, b, c=1, d=2):
    pass

有了这个:

import inspect
inspect.getargspec(func)

我得到了这个结果:

ArgSpec(args=['a', 'b', 'c', 'd'], varargs=None, keywords=None, defaults=(1, 2))

有没有更简单的方法来查找不采用默认值的函数的参数? 有了上面的陈述,我必须做一些像这样丑陋的事情

ab = args[:-len(defaults)]

检索这些参数。 ab现在为['a', 'b']

感谢。

[编辑] 有关详细说明: 我想在函数func之外进行检查,而不是在函数内部。

1 个答案:

答案 0 :(得分:1)

对于Python 3.3及更高版本,使用Signature

In [15]: [x for x, y in inspect.signature(func).parameters.items() if y.default is y.empty]
Out[15]: ['a', 'b']