Сопоставление шаблону и неосвоенные области
Базовая статья: pep-636 (а также pep-635 и pep-634)
Главная сложность: конструкция match … case имеет отличный от Python синтаксис! Спасибо смене парсера с LL(1) на PEG.
Пересказ tutorial:
Вместо цепочки однотипных elif-ов
- →
- Связанные переменные и catch-all:
- Распаковка и catch-all:
Как всегда, включая len()==0
- Альтернативы и явно связанные переменные
- Фильтры:
Проверка типов (help(complex)), проверка полей объекта (как правило по имени, редко когда определено перечисление полей)
- Как определить перечисление полей:
- Словари:
Как отличить константу от связанной переменной? Никак! Храните константы в изолированных пространствах имён:
TODO enum doesn't work
Что мы не посмотрели в Python
(это очень жаль) Не было разговора про стиль оформления кода, хотя бы про pep-8 и best practices.
Языковые модули, такие как dataclasses, enum, weakref и т. п. Это как бы расширения языка, а мы его проигнорировали
- Оформление собственных модулей — будет в курсе следующего семестра
- Инструменты разработки, встроенные в сам дистрибутив Python. Об этом — курс следующего семестра
Полезные для боевого программирования модули, типа os, pathlib, subprocess, http и т. п. — их довольно много
- …
http://PyPi.org: 420 728 проектов (Сколько там было осенью?)
The Zen of Python, by Tim Peters
import this
import antigravity
Д/З
Научиться определять, в каких алгоритмических конструкциях можно использовать match … case — и использовать его там!