Головоломка Python 3.10
📚 Свяжитесь с нами. Хотите узнать, что нового на книжной полке Pragmatic? "Подпишитесь на нашу рассылку". Вы будете первыми, кто узнает о выступлениях авторов, о книгах в бета-версии, новых книгах в печати и промокодах, дающих вам скидки до 40 процентов.
Пробуем сопоставить
Python 3.10 представил новый классный оператор match. Вы решаете использовать его в настольной игре, которую пишете:
Тогда попробуй (полюбил REPL):
Хм… 5 меньше 100 (MAX_X
), почему такой результат?
Затем вы помните, что match
- это сопоставление структурного шаблона, а не выражение switch
- оно сопоставляется по структуре, а не по значению. Таким образом, первый случай будет соответствовать любым 2 элементам tuple
. В вашем случае он установит MAX_X
на 5 и MAX_Y
на 100 и не продвинется ни на какую точку. К счастью для вас, внутри advance
MAX_X
и MAX_Y
находятся локальные переменные, которые не будут перезаписывать глобальные.
Есть два способа решить эту проблему. Первый - использовать охранники:
Второй вариант - преобразовать MAX_X
и MAX_Y
в перечисления:
Сопоставление структурных шаблонов - это захватывающая новая функция - время покажет, как они будут использоваться и какие передовые практики появятся. А пока вы можете узнать больше о структурном сопоставлении с образцом на сайте Бена Хойта.
Если вам нравится решать проблемы программирования, ознакомьтесь с серией книг Brain Teaser Мики Тебека с книжной полки Pragmatic. Вы можете сэкономить 35% на версиях электронных книг с промокодом brain_teasers_35 до 31 октября 2021 года: