🐍 Укус питона 🐍
2.61K subscribers
975 photos
16 videos
284 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Что выведет этот код?
Anonymous Quiz
4%
10 15
90%
25 125
7%
Ошибка: неверный синтаксис.
Передача набора значений. Продолжение.

Также можно задавать альтернативные значения для всего шаблона в том числе с помощью объектов других классов:

Здесь первый шаблон соответствует любому объекту Person, у которого атрибут name = "Tom, и любому объекту Student, у которого атрибут name = "Tomas".

Второй шаблон - case Person(name=name) | Student(name=name) соответствует любому объекту Person и Student.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы
Позиционные параметры

В примерах из прошлых постов для определения атрибутов прописывалось их имя: case Person(name="Tom", age=37). Но если используется куча шаблонов, и в каждом необходимо связать атрибуты объекта с некоторыми значениями или переменными, то постоянное упоминание атрибутов можно несколько раздуть код. Но Python также позволяет использовать позиционные параметры, смотрим код:

Обратите внимание в классе Person на вызов функции. Благодаря этому Python будет знать, что при указании атрибутов атрибут name будет идти первым, а атрибут age - вторым.

И таким образом, в шаблонов не нужно указывать имя атрибута: case Person("Tom", 37) - Python сам сопоставит атрибуты и значения/переменные на основе их позиции.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #классы
Каков вывод следующего цикла for и range() функции?
Anonymous Quiz
14%
-2, -1, -3, -4
11%
-2, -1, 0, 1, 2, 3,
6%
-2, -1, 0
70%
-2, -3, -4,
guards или ограничения шаблонов

Guard или ограничения шаблонов позволяют установить дополнительные условия, которым должно соответсвовать выражение. Ограничение задается сразу после шаблона с помощью ключевого слова if, после которого идет условие ограничения:

Здесь первый шаблон соответствует любому объекту Person, у которого атрибут age меньше 18. Собственно часть if age < 18 и представляет ограничение. Соответственно, если у пользователя возраст меньше 18, то будет выводьтся одно сообщение, если больше 18, то другое.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #guards #шаблоны
Что выведет этот код?
Anonymous Quiz
52%
J, h, n,
34%
J, h, o, n,
14%
J, h,
guards или ограничения шаблонов. Продолжение.

Подобным образом можно вводить дополнительные ограничения, первый пример:

Условия ограничений могут быть более сложными и составными по структуре, второй пример:

В данном случае функция получает кортеж data. Оба шаблона в конструкции match соответствуют двухэлементному кортежу. Но первый шаблон также применяет ограничение name == "admin" or age not in range(1, 101), в соответствии с которым первый элемент кортежа должен иметь значение "admin", а второй должен находиться вне диапазона 1-101.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #guards #шаблоны
Что выведет этот код?
Anonymous Quiz
82%
Emma 25
18%
Emma 20
0%
Emma 5
Установка псевдонимов и паттерн AS.

Оператор as позволяет установить псевдоним для значения шаблона или для всего шаблона. Простейший пример, смотрим пример:

Здесь первый шаблон соответствует трем строкам: "Tom" | "Tomas" | "Tommy". После набора значений идет оператор as, после которого указывается псевдоним. И вне зависимости от того, какая именно строка передана, она окажется в переменной name.

Псевдоним можно применять как для отдельного значения шаблона, так и для всего шаблона, вторая часть кода:

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Что выведет этот код?
Anonymous Quiz
11%
25
21%
5
68%
NameError
Установка псевдонимов и паттерн AS. Продолжение.

Обычно псевдонимы более применимы в каких-то более сложных по структуре данных. Например:

Здесь функция print_family принимает кортеж, который должен состоять из двух элементов Person. В первом шаблоне определяем для первого элемента псевдоним husband, а для второго - псевдоним wife. Затем, используя эти псевдонимы, мы можкем обращаться к их атрибутам.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Определение и подключение модулей.

Модуль в языке Python представляет отдельный файл с кодом, который можно повторно использовать в других программах.

Для создания модуля необходимо создать файл с расширением *.py, который будет представлять модуль. Затем в этом файле надо определить одну или несколько функций.

Допустим, основной файл программы называется main.py. И мы хотим подключить к нему внешние модули.

Для этого сначала определим новый модуль: создадим в той же папке, где находится main.py, новый файл, который назовем message.py. По умолчанию интерпретатор Python ищет модули по ряду стандартных путей, один из которых - это папка главного, запускаемого скрипта. Поэтому, чтобы интерпретатор подхватил модуль message.py, для простоты оба файла поместим в один проект.

Модуль будет называться message. Определим в нем следующий код:

Здесь определена переменная hello и функция print_message, которая в качестве параметра получает текст и выводит его на консоль.

🐍 Укус питона // 💬 Чат // #теория #модули