Оператор match
Оновлено: 24.04.2023
Оператор match використовується для зіставлення шаблону. Синтаксис:
match_stmt ::= 'match' subject_expr ":" NEWLINE INDENT case_block+ DEDENT
subject_expr ::= star_named_expression "," star_named_expressions?
| named_expression
case_block ::= 'case' patterns [guard] ":" block
Зіставлення шаблону приймає шаблон як вхідні дані (після case) і значення теми (після match). Шаблон (який може містити підшаблони) зіставляється зі значенням теми. Результати:
Успіх або невдача збігу (також називається успішним або невдалим шаблоном). Можливе прив’язування відповідних значень до імені. Передумови для цього обговорюються нижче.
Ключові слова match і case є м’якими ключовими словами.
>>> flag = False
>>> match (100, 200):
... case (100, 300): # Mismatch: 200 != 300
... print('Case 1')
... case (100, 200) if flag: # Successful match, but guard fails
... print('Case 2')
... case (100, y): # Matches and binds y to 200
... print(f'Case 3, y: {y}')
... case _: # Pattern not attempted
... print('Case 4, I match anything!')
...
Case 3, y: 200