Что можно передать в Depends() в FastAPI и каким объектом это является в Python?

FastAPI: Depends реализует механизм внедрения зависимостей В параметр передаётся: вызываемая функция или класс Тип параметра: объект с call (callable) — callable в Python FastAPI использует его, чтобы автоматически…

Короткий ответ

Что ответить на собеседовании

FastAPI: Depends реализует механизм внедрения зависимостей В параметр передаётся: вызываемая функция или класс Тип параметра: объект с call (callable) — callable в Python FastAPI использует его, чтобы автоматически разрешать зависимости функций на основе их сигнатур Механизм применяется для декларативного задания зависимостей в обработчиках запросов Допустимы обычные функции, async-функции и классы с методом call При вызове эндпоинтов через introspection выполняется инъекция аргументов

Подробный разбор

Ответ с пояснениями

Что можно передать в Depends() в FastAPI и каким объектом это является в Python?

  • FastAPI: Depends реализует механизм внедрения зависимостей
  • В параметр передаётся: вызываемая функция или класс
  • Тип параметра: объект с __call__ (callable) — callable в Python
  • FastAPI использует его, чтобы автоматически разрешать зависимости функций на основе их сигнатур
  • Механизм применяется для декларативного задания зависимостей в обработчиках запросов
  • Допустимы обычные функции, async-функции и классы с методом __call__
  • При вызове эндпоинтов через introspection выполняется инъекция аргументов

Итог: Depends() получает callable (вызываемый объект), который FastAPI вызывает, чтобы получить значение зависимости.

Подробный ответ

Основной ответ

В FastAPI функция Depends() получает параметр в виде callable-объекта — чаще всего функции или класса, используемых для внедрения зависимостей (dependency injection). В терминах Python это любой объект, доступный для вызова: он реализует протокол __call__ и работает подобно функции.

Ключевые моменты

  • В Depends() обычно указывают функцию или класс, который FastAPI вызывает во время обработки запроса для разрешения зависимости.
  • С точки зрения Python это callable: обычная функция, метод или, например, класс, создающий экземпляр посредством __call__.
  • Используя аннотации и типизацию, FastAPI автоматически вызывает этот объект и передаёт ему необходимые параметры — например, параметры запроса, body или другие зависимости.
  • Depends() представляет собой не статическое значение, а динамический механизм: во время runtime он добавляет в маршрут вызов callable и формирует цепочку зависимостей.

Практический контекст

В прикладных проектах через Depends() подключают сервисы, базы данных, авторизацию, session и любые объекты, которые требуется переиспользовать. К примеру, функция get_current_user может быть callable с собственными аргументами и логикой, а Depends(get_current_user) выполнит её и передаст результат в endpoint. Такой декларативный подход позволяет управлять зависимостями без явного вызова в каждом маршруте.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку