Загружаем изображение…
Валидируем входные данные по сигнатуре функции!
Частая задача: приходит
dict (JSON, query params, config), и его нужно привести к сигнатуре функции, проверить имена аргументов, обязательные поля, дефолты, лишние ключи.Большинство пишут проверки или
if / try / except. Но Python умеет делать это стандартными средствами:sig = signature(func)Получаете имена параметров, дефолты, *, **, позиционные и keyword-only аргументы:
args = sig.bind_partial(**data)bind_partial автоматически проверяет имена аргументов, ловит лишние ключи (если нет **kwargs), проверяет совместимость вызова (keyword-only, positional-only и т.д.)
Для строгой проверки всех обязательных можно использовать sig.bind:
args.apply_defaults()Здесь подставляются все дефолты из сигнатуры функции, без дублирования логики:
func(**args.arguments)Это позволяет проверять совместимость входных данных с реальным вызовом функции.
Python Ready | #совет
Просмотры: 241