Загружаем изображение…

Валидируем входные данные по сигнатуре функции!



Частая задача: приходит 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
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти