检查方法参数的Python 2/3兼容方式

时间:2019-03-05 09:53:52

标签: python python-3.x python-2.7

在Python 2中,要检查方法的参数,我可以使用inspect.getargspec

但是,在Python 3中,以inspect.getfullargspec的名称添加了一个替代项,inspect.getargspec被弃用了。

是否可以编写检查参数的Python 2和3兼容代码?实际上,我只需要在运行时找出方法具有的参数数量。

1 个答案:

答案 0 :(得分:4)

有一种通用的解决方案可以编写兼容Python2 / 3的导入

try:
    from inspect import getfullargspec as get_args
except ImportError:
    from inspect import getargspec as get_args

def foo(a, *args, **kwargs):
    pass

print(get_args(foo))

# Python 3
# FullArgSpec(args=['a'], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})

# Python 2
# ArgSpec(args=['a'], varargs='args', keywords='kwargs', defaults=None)