TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5005 621
Как применять структурное сопоставление с образцом к деревьям в Python

Структурное сопоставление особенно выразительно на рекурсивных структурах. Автор моделирует булевы выражения датаклассами Var, And, Or и Not, а затем разбирает каждый тип веткой case.

Вычислитель захватывает поля прямо в образце. Для переменной он берёт значение из словаря, для And и Or рекурсивно обходит дочерние выражения через all() и any(), для Not инвертирует результат. Общая ветка выбрасывает ошибку, если появился неизвестный подкласс: явное лучше неявного.

Тот же приём автор переносит на форматированный вывод дерева. Получается компактный разбор того, как рекурсивно применять match к древовидным данным, не превращая обход в цепочку проверок типов.
  • ❤ 1
More from @zen_of_python
  1. Sep 22, 2026Почему в Python стоит подменять свой интерфейс, а не httpx Если бизнес-тест напрямую подме…
  2. Sep 22, 2026Как точно типизировать *args и **kwargs в Python Запись *args: tuple[int, str] выглядит ка…
  3. Sep 21, 2026Как точечно сравнивать скорость функций Python с tprof Профилировщик помогает найти медлен…
  4. Sep 21, 2026Как писать Python-скрипты, которые удобно запускать в пайплайнах В разборе Bite code! собр…
  5. Sep 21, 2026Как упаковать Go-бинарник в wheel и подключить к Python PyPI может раздавать не только Pyt…
  6. Sep 20, 2026Как collections.deque хранит элементы блоками У deque два конца, поэтому легко представить…
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 →