Python Glossary English

все Python 3до 3.11Удалено из стандартной библиотекифункция

inspect.getargspec()

удалено

Описывал параметры функции кортежем ArgSpec. Удалён в Python 3.11 — используйте inspect.signature() или inspect.getfullargspec().

Синтаксис

inspect.getargspec(func)  # до 3.11

getargspec() возвращал ArgSpec(args, varargs, keywords, defaults) и не умел описать аннотации и параметры только по имени, появившиеся в Python 3, — на такой функции он падал с ValueError. Поэтому его объявили устаревшим ещё в 3.0 и убрали в 3.11. Как переписать: основной путь — sig = inspect.signature(f) и обход sig.parameters (имя, вид, значение по умолчанию, аннотация). Если код ждёт кортеж, замените на inspect.getfullargspec(f): поле keywords там называется varkw, плюс есть kwonlyargs, kwonlydefaults и annotations.

Примеры

# Python 3.11+
import inspect
try:
    inspect.getargspec
except AttributeError as e:
    print(type(e).__name__)  # → AttributeError
# Python 3.11+
import inspect
def f(a, b=1, *args, **kw):
    pass
print(list(inspect.signature(f).parameters))  # → ['a', 'b', 'args', 'kw']
spec = inspect.getfullargspec(f)
print(spec.args, spec.varkw, spec.defaults)  # → ['a', 'b'] kw (1,)
import inspect
def f(a, b=1, *args, **kw):
    pass
spec = inspect.getargspec(f)
print(spec.args, spec.keywords, spec.defaults)  # → ['a', 'b'] kw (1,)

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности