все 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Сообщить о неточности