在Python 2中,要检查方法的参数,我可以使用inspect.getargspec
。
但是,在Python 3中,以inspect.getfullargspec
的名称添加了一个替代项,inspect.getargspec
被弃用了。
是否可以编写检查参数的Python 2和3兼容代码?实际上,我只需要在运行时找出方法具有的参数数量。
答案 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)