Python Glossary English

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

inspect.formatargspec()

удалено

Собирал из результата getargspec() строку вида (a, b=1). Удалён в Python 3.11 — используйте str(inspect.signature(f)).

Синтаксис

inspect.formatargspec(args, varargs=None, varkw=None, defaults=None)  # до 3.11

Функция принимала части разобранной сигнатуры (args, varargs, varkw, defaults…) и печатала их как список параметров в скобках. С Python 3.3 то же самое делает объект inspect.Signature: str(signature) уже даёт готовую строку, с аннотациями и параметрами только по имени. formatargspec() объявили устаревшей в 3.5 и убрали в 3.11. Как переписать: inspect.formatargspec(*inspect.getfullargspec(f)) → str(inspect.signature(f)). Для собственной сигнатуры соберите inspect.Signature из списка inspect.Parameter.

Примеры

# Python 3.11+
import inspect
try:
    inspect.formatargspec
except AttributeError as e:
    print(type(e).__name__)  # → AttributeError
# Python 3.11+
import inspect
def f(a, b=1, *, c):
    pass
print(inspect.signature(f))  # → (a, b=1, *, c)
P = inspect.Parameter
sig = inspect.Signature([P('x', P.POSITIONAL_OR_KEYWORD, default=0)])
print(sig)  # → (x=0)
import inspect
def f(a, b=1, *args):
    pass
print(inspect.formatargspec(*inspect.getfullargspec(f)))  # → (a, b=1, *args)

См. также

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

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