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

ype*_*per 5 python python-2.7 python-3.x

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

但是,在Python 3中,在的名称下添加了一个直接替换项inspect.getfullargspec,并且inspect.getargspec已弃用。

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

san*_*ash 6

有一个通用的解决方案来编写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)
Run Code Online (Sandbox Code Playgroud)