Альтернативные значения
Если необходимо, чтобы элемент массива соответствовал набору значений, то эти значения можно перечислить через вертикальную черту, смотрим первую часть кода:
В данном случае первый шаблон соответствует массиву из трех элементов, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные массивы, вторая часть:
В данном случае первый шаблон будет соответствовать двум массивам: ["Tom", "Sam", "Bob"] и ["Tomas", "Sam", "Bob"]
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Если необходимо, чтобы элемент массива соответствовал набору значений, то эти значения можно перечислить через вертикальную черту, смотрим первую часть кода:
В данном случае первый шаблон соответствует массиву из трех элементов, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные массивы, вторая часть:
В данном случае первый шаблон будет соответствовать двум массивам: ["Tom", "Sam", "Bob"] и ["Tomas", "Sam", "Bob"]
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Что выведет этот код?
Anonymous Quiz
80%
Salary: 12000 Salary: 8000
13%
Salary: 8000 Salary: 12000
7%
Программа завершилась с ошибками
Словари в pattern matching
Pattern matching позволяет проверить наличие в словаре определнных ключей и значений, первый пример:
Здесь предполагается, что в функцию look передается словарь. Первый шаблон (внимание на второй пример) соответствует словарю, в котором есть два элемента со следующими ключами и значениями: "red": "красный" и "blue": "синий".
Второй шаблон ({"red": "красный"}) соответствует любому словарю, где есть элемент "red": "красный". Аналогично третий шаблон ({"blue": "синий"}) соответствует любому словарю, где есть элемент "blue": "синий"
Четвертый шаблон - case {} соответствует в принципе любому словарю.
Последний шаблон соответствует любому значению и применяется на случай, если в функцию передан не словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #словари
Pattern matching позволяет проверить наличие в словаре определнных ключей и значений, первый пример:
Здесь предполагается, что в функцию look передается словарь. Первый шаблон (внимание на второй пример) соответствует словарю, в котором есть два элемента со следующими ключами и значениями: "red": "красный" и "blue": "синий".
Второй шаблон ({"red": "красный"}) соответствует любому словарю, где есть элемент "red": "красный". Аналогично третий шаблон ({"blue": "синий"}) соответствует любому словарю, где есть элемент "blue": "синий"
Четвертый шаблон - case {} соответствует в принципе любому словарю.
Последний шаблон соответствует любому значению и применяется на случай, если в функцию передан не словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #словари
Передача набора значений
С помощью вертикальной черты | можно определить альтернативные значения, смотрим код:
В данном случае шаблон {"red": "красный" | "алый" | "червонный"} соответствует словарю, в котором есть элемент с ключом "red" и значением "красный" или "алый" или "червонный".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
С помощью вертикальной черты | можно определить альтернативные значения, смотрим код:
В данном случае шаблон {"red": "красный" | "алый" | "червонный"} соответствует словарю, в котором есть элемент с ключом "red" и значением "красный" или "алый" или "червонный".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
Что выведет этот код?
Anonymous Quiz
13%
{‘Vicki’, ‘Jodi’, ‘Garry’, ‘Eric’}
41%
{‘Jodi’, ‘Vicki’, ‘Garry’, ‘Eric’}
46%
Программа выполнена с ошибкой
Получение значений по ключам
Pattern matching позволяет получить значения элементов в переменные в виде, первый пример:
Например, смотрим код:
В первом шаблоне значение элемента с ключом "red" попадает в переменную red, а элемента с ключом "blue" - в переменную blue.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
Pattern matching позволяет получить значения элементов в переменные в виде, первый пример:
Например, смотрим код:
В первом шаблоне значение элемента с ключом "red" попадает в переменную red, а элемента с ключом "blue" - в переменную blue.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
Что выведет этот код?
Anonymous Quiz
15%
[0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5]
51%
[0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]
34%
Программа выполнена с ошибками
Получение всех значений
С помощью символов ** (двойная звездочка) можно получить остальные элементы словаря, смотрим код:
Здесь шаблон {"red": red, **rest} соответствует любому словарь, в котором есть элемент с ключом "red". Все остальные элементы словаря помещаются в параметр rest, который сам в свою очередь представляет словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
С помощью символов ** (двойная звездочка) можно получить остальные элементы словаря, смотрим код:
Здесь шаблон {"red": red, **rest} соответствует любому словарь, в котором есть элемент с ключом "red". Все остальные элементы словаря помещаются в параметр rest, который сам в свою очередь представляет словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
Классы в pattern matching
Python позволяет использовать в pattern matching в качестве шаблонов объекты классов. Рассмотрим на примере:
Здесь определен класс Person, который через конструктор принимает значения для атрибутов self.name и self.age.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы
Python позволяет использовать в pattern matching в качестве шаблонов объекты классов. Рассмотрим на примере:
Здесь определен класс Person, который через конструктор принимает значения для атрибутов self.name и self.age.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы
Что выведет этот код?
Anonymous Quiz
4%
6
13%
33
6%
123
78%
Ошибка. Смешивание операторов между числами и строками не поддерживается.
📌 Уже 25 декабря в 19:00 (мск) стартует наш бесплатный двухдневный онлайн-интенсив.
Во время эфира вы научитесь писать код, запускать и поддерживать простого Telegram-бота. Познакомитесь с синтаксисом языка и увидите, как декомпозировать задачи по разработке.
Приходите, чтобы пообщаться и поучиться у опытного разработчика, узнать всю правду и перспективы Python и получить полезные подарки для комфортного старта в разработку.
🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Python-разработчика.
Также вас ждут бонусы на обучение на Хекслете и новогодние скидки!
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670
Во время эфира вы научитесь писать код, запускать и поддерживать простого Telegram-бота. Познакомитесь с синтаксисом языка и увидите, как декомпозировать задачи по разработке.
Приходите, чтобы пообщаться и поучиться у опытного разработчика, узнать всю правду и перспективы Python и получить полезные подарки для комфортного старта в разработку.
🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Python-разработчика.
Также вас ждут бонусы на обучение на Хекслете и новогодние скидки!
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670
Классы в pattern matching. Продолжение.
Функция print_person принимает параметр Person, который, как предполагается, представляет объект класса Person. И внутри функции конструкция match сравнивает значение параметра person с рядом шаблонов. Каждый шаблон представляет собой определение Person, где с каждым атрибутом сопоставляется некоторое значение. Например, первый шаблон строго определяет значения обоих атрибутов, смотрим:
Данный шаблон соответствует объекту Person, если у этого объекта атрибут name имеет значение "Tom", а атрибут age - значение 37.
Стоит отметить, что этот шаблон - это НЕ вызов конструктора Person. Шаблон просто устанавливает, как атрибуты сопоставляются со значениями.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы
Функция print_person принимает параметр Person, который, как предполагается, представляет объект класса Person. И внутри функции конструкция match сравнивает значение параметра person с рядом шаблонов. Каждый шаблон представляет собой определение Person, где с каждым атрибутом сопоставляется некоторое значение. Например, первый шаблон строго определяет значения обоих атрибутов, смотрим:
Данный шаблон соответствует объекту Person, если у этого объекта атрибут name имеет значение "Tom", а атрибут age - значение 37.
Стоит отметить, что этот шаблон - это НЕ вызов конструктора Person. Шаблон просто устанавливает, как атрибуты сопоставляются со значениями.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы