Python Glossary English

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