все Python 3устарело в 3.5inspectфункция
inspect.getcallargs()
сигнатуры
Deprecated с 3.5: раскладывает аргументы по именам параметров, как при вызове функции, и возвращает dict. Замена — Signature.bind().
Синтаксис
inspect.getcallargs(func, /, *args, **kwds)
Устаревание только в документации: предупреждения при вызове нет, и функция работает во всех версиях 3.x, поэтому её легко встретить в старом коде. В отличие от bind() она сразу подставляет умолчания, пустые *args и **kwargs, а у связанного метода добавляет self; ошибочный вызов даёт TypeError с сообщением настоящего вызова. Новый код пишут на signature(f).bind(...) с apply_defaults().
Примеры
import inspect
def g(a, b=1, *args, **kw): pass
print(inspect.getcallargs(g, 1)) # → {'a': 1, 'args': (), 'kw': {}, 'b': 1}
ba = inspect.signature(g).bind(1)
ba.apply_defaults()
print(ba.arguments) # → {'a': 1, 'b': 1, 'args': (), 'kw': {}}
try:
inspect.getcallargs(g)
except TypeError as e:
print(e) # → g() missing 1 required positional argument: 'a'
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности