#python #python-3.x #python-2.7
#python #python-3.x #python-2.7
Вопрос:
В Python 2 для проверки аргументов метода я могу использовать inspect.getargspec
.
Однако в Python 3 была добавлена дополнительная замена под названием inspect.getfullargspec
, которая inspect.getargspec
стала устаревшей.
Существует ли способ написания совместимого с Python 2 и 3 кода, который проверяет аргументы? На самом деле мне нужно только выяснить во время выполнения количество аргументов, которыми обладает метод.
Комментарии:
1. звучит как вариант использования предложения try-except
2. Или
if
проверьте, какая версия запущена.3. Конечно, хотелось бы этого избежать. 🙂
Ответ №1:
Существует общее решение для написания импорта, совместимого с 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)