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