Как в FastAPI делается инверсия зависимостей

Python Middle Без компании
Как в FastAPI делается инверсия зависимостей
Ответы
FastAPI использует механизм Dependency Injection (DI) через декоратор `@app.depends()`. Зависимости объявляются как функции, которые могут принимать параметры запроса, другие зависимости и возвращать значения. Пример: ``` from fastapi import FastAPI, Depends app = FastAPI() def get_db(): db = "db_connection" try: yield db finally: print("Close connection") @app.get("/items/") async def read_items(db: str = Depends(get_db)): return {"db": db} ``` Ключевые моменты: - Зависимости могут быть функциями или классами - Поддерживаются асинхронные зависимости - Можно использовать `yield` для управления жизненным циклом (как в примере с БД) - Зависимости могут зависеть от других зависимостей - FastAPI автоматически разрешает зависимости при обработке запроса Для сложных сценариев можно использовать `Depends()` в маршрутах, зависимостях и даже в других зависимостях, создавая иерархию.