Шаблони відображення

Оновлено: 24.04.2023

Шаблон зіставлення містить один або кілька шаблонів ключ-значення. Синтаксис подібний до побудови словника. Синтаксис:

mapping_pattern     ::=  "{" [items_pattern] "}"
items_pattern       ::=  ",".key_value_pattern+ ","?
key_value_pattern   ::=  (literal_pattern | value_pattern) ":" pattern
                         | double_star_pattern
double_star_pattern ::=  "**" capture_pattern

Щонайбільше один шаблон подвійної зірки може бути в шаблоні відображення. Шаблон подвійної зірки має бути останнім підшаблоном у шаблоні відображення.

Дублікати ключів у шаблонах зіставлення заборонені. Повторювані ключі літералів викличуть SyntaxError. Два ключі, які інакше мають однакові значення, викликають ValueError під час виконання.

Нижче наведено логічний потік для зіставлення шаблону зіставлення зі значенням предмета:

Якщо значення предмета не є відображенням 3, шаблон відображення не виконується. Якщо кожен ключ, поданий у шаблоні відображення, присутній у відображенні предмета, і шаблон для кожного ключа збігається з відповідним елементом відображення предмета, шаблон відображення є успішним. Якщо в шаблоні відображення виявлено повторювані ключі, шаблон вважається недійсним. SyntaxError виникає для повторюваних літеральних значень; або ValueError для іменованих ключів з тим самим значенням.

Простіше кажучи, {KEY1: P1, KEY2: P2, ... } відповідає, лише якщо відбувається все наступне:

перевірка є відображенням KEY1 in P1 відповідає [KEY1] … і так далі для відповідної пари КЛЮЧ/шаблон.