TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7520 3.15K
🛠 Проблема: неопределенность возвращаемого типа

Представьте функцию, которая генерирует конфиг. Если действие — DELETE, она возвращает список путей (`list[str]`), в остальных случаях — словарь (`dict`).


def generate_config(context: dict, action: Action) -> dict | list[str]:
...



Для Mypy такая функция возвращает «или словарь, или список». Если вы попытаетесь использовать результат как чистый dict, тайп-чекер выдаст ошибку, даже если вы уверены в типе.

✨ Решение: использование @overload

Декоратор @overload позволяет описать конкретные комбинации входных и выходных данных:

from typing import overload, Literal

@overload
def generate_config(context: dict, action: Literal[Action.DELETE]) -> list[str]: ...

@overload
def generate_config(context: dict, action: Literal[Action.MODIFY, Action.ADD]) -> dict: ...

def generate_config(context: dict, action: Action) -> dict | list[str]:
# Реальная логика здесь
...


📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека питониста

#буст
  • 👍 14
  • ❤ 4
More from @pyproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  3. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  4. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  5. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  6. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →