6

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

然而,在 Python 3 中,在 name 下添加了一个插入式替换inspect.getfullargspec,并被inspect.getargspec弃用。

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

4

1 回答 1

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)
于 2019-03-05T09:59:44.503 回答