Главная страница » Python » 60. Оператор Match
Добро пожаловать на 60-й урок по Python! Сегодня мы рассмотрим оператор match
, который был введен в Python 3.10 и представляет собой мощный инструмент для паттерн-матчинга (или сопоставления с образцом). Оператор match
позволяет легко обрабатывать сложные структуры данных и выполнять различные действия на основе их значений.
match
?Оператор match
предназначен для сопоставления значений с различными паттернами. Он позволяет проверять данные и выполнять соответствующий код в зависимости от того, какой паттерн соответствует данным.
match variable:
case pattern_1:
# Код, который выполняется, если variable соответствует pattern_1
case pattern_2:
# Код, который выполняется, если variable соответствует pattern_2
case _:
# Код, который выполняется, если ни один из предыдущих паттернов не подошел
Здесь variable
— это переменная, которую мы проверяем на соответствие различным паттернам. case pattern
указывает паттерн, с которым переменная будет сравниваться. _
(подчеркивание) используется как «заглушка» для любого значения, не подошедшего под предыдущие паттерны.
value = 10
match value:
case 1:
print("One")
case 10:
print("Ten")
case 100:
print("Hundred")
case _:
print("Other")
В этом примере переменная value
сопоставляется с различными значениями. Поскольку value
равно 10, будет выполнен блок кода case 10
.
coordinates = (4, 5)
match coordinates:
case (0, 0):
print("Origin")
case (x, 0):
print(f"On the x-axis at {x}")
case (0, y):
print(f"On the y-axis at {y}")
case (x, y):
print(f"Point at ({x}, {y})")
Здесь кортеж coordinates
сопоставляется с различными паттернами, чтобы определить его положение на плоскости.
from collections import namedtuple
Person = namedtuple('Person', ['name', 'age'])
person = Person(name='Alice', age=30)
match person:
case Person(name='Alice', age=age):
print(f"Alice is {age} years old")
case Person(name=name, age=age):
print(f"{name} is {age} years old")
case _:
print("Unknown person")
В этом примере используется именованный кортеж Person
для сопоставления значений name
и age
.
def process(value):
match value:
case int():
print("Integer")
case str():
print("String")
case list():
print("List")
case _:
print("Other type")
process(42) # Ожидаемый вывод: Integer
process("Hello") # Ожидаемый вывод: String
process([1, 2, 3]) # Ожидаемый вывод: List
process(3.14) # Ожидаемый вывод: Other type
Здесь функция process
использует match
для определения типа данных и выполнения соответствующих действий.
def classify(value):
match value:
case 1 | 2 | 3:
print("Low number")
case 4 | 5 | 6:
print("Medium number")
case 7 | 8 | 9:
print("High number")
case _:
print("Out of range")
classify(3) # Ожидаемый вывод: Low number
classify(5) # Ожидаемый вывод: Medium number
classify(9) # Ожидаемый вывод: High number
classify(10) # Ожидаемый вывод: Out of range
В этом примере используются операторы |
для сопоставления с несколькими паттернами одновременно.
Сегодня мы рассмотрели оператор match
, который предоставляет мощный и гибкий инструмент для сопоставления значений с различными паттернами. Вы узнали, как использовать match
для обработки различных структур данных, включая кортежи, списки, и типы данных.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.