Каков вывод следующего цикла 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 #шаблоны
Guard или ограничения шаблонов позволяют установить дополнительные условия, которым должно соответсвовать выражение. Ограничение задается сразу после шаблона с помощью ключевого слова if, после которого идет условие ограничения:
Здесь первый шаблон соответствует любому объекту Person, у которого атрибут age меньше 18. Собственно часть if age < 18 и представляет ограничение. Соответственно, если у пользователя возраст меньше 18, то будет выводьтся одно сообщение, если больше 18, то другое.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #guards #шаблоны
guards или ограничения шаблонов. Продолжение.
Подобным образом можно вводить дополнительные ограничения, первый пример:
Условия ограничений могут быть более сложными и составными по структуре, второй пример:
В данном случае функция получает кортеж data. Оба шаблона в конструкции match соответствуют двухэлементному кортежу. Но первый шаблон также применяет ограничение name == "admin" or age not in range(1, 101), в соответствии с которым первый элемент кортежа должен иметь значение "admin", а второй должен находиться вне диапазона 1-101.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #guards #шаблоны
Подобным образом можно вводить дополнительные ограничения, первый пример:
Условия ограничений могут быть более сложными и составными по структуре, второй пример:
В данном случае функция получает кортеж data. Оба шаблона в конструкции match соответствуют двухэлементному кортежу. Но первый шаблон также применяет ограничение name == "admin" or age not in range(1, 101), в соответствии с которым первый элемент кортежа должен иметь значение "admin", а второй должен находиться вне диапазона 1-101.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #guards #шаблоны
Установка псевдонимов и паттерн AS.
Оператор as позволяет установить псевдоним для значения шаблона или для всего шаблона. Простейший пример, смотрим пример:
Здесь первый шаблон соответствует трем строкам: "Tom" | "Tomas" | "Tommy". После набора значений идет оператор as, после которого указывается псевдоним. И вне зависимости от того, какая именно строка передана, она окажется в переменной name.
Псевдоним можно применять как для отдельного значения шаблона, так и для всего шаблона, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Оператор as позволяет установить псевдоним для значения шаблона или для всего шаблона. Простейший пример, смотрим пример:
Здесь первый шаблон соответствует трем строкам: "Tom" | "Tomas" | "Tommy". После набора значений идет оператор as, после которого указывается псевдоним. И вне зависимости от того, какая именно строка передана, она окажется в переменной name.
Псевдоним можно применять как для отдельного значения шаблона, так и для всего шаблона, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Установка псевдонимов и паттерн AS. Продолжение.
Обычно псевдонимы более применимы в каких-то более сложных по структуре данных. Например:
Здесь функция print_family принимает кортеж, который должен состоять из двух элементов Person. В первом шаблоне определяем для первого элемента псевдоним husband, а для второго - псевдоним wife. Затем, используя эти псевдонимы, мы можкем обращаться к их атрибутам.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Обычно псевдонимы более применимы в каких-то более сложных по структуре данных. Например:
Здесь функция print_family принимает кортеж, который должен состоять из двух элементов Person. В первом шаблоне определяем для первого элемента псевдоним husband, а для второго - псевдоним wife. Затем, используя эти псевдонимы, мы можкем обращаться к их атрибутам.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #паттерны #псевдонимы
Определение и подключение модулей.
Модуль в языке Python представляет отдельный файл с кодом, который можно повторно использовать в других программах.
Для создания модуля необходимо создать файл с расширением *.py, который будет представлять модуль. Затем в этом файле надо определить одну или несколько функций.
Допустим, основной файл программы называется main.py. И мы хотим подключить к нему внешние модули.
Для этого сначала определим новый модуль: создадим в той же папке, где находится main.py, новый файл, который назовем message.py. По умолчанию интерпретатор Python ищет модули по ряду стандартных путей, один из которых - это папка главного, запускаемого скрипта. Поэтому, чтобы интерпретатор подхватил модуль message.py, для простоты оба файла поместим в один проект.
Модуль будет называться message. Определим в нем следующий код:
Здесь определена переменная hello и функция print_message, которая в качестве параметра получает текст и выводит его на консоль.
🐍 Укус питона // 💬 Чат // #теория #модули
Модуль в языке Python представляет отдельный файл с кодом, который можно повторно использовать в других программах.
Для создания модуля необходимо создать файл с расширением *.py, который будет представлять модуль. Затем в этом файле надо определить одну или несколько функций.
Допустим, основной файл программы называется main.py. И мы хотим подключить к нему внешние модули.
Для этого сначала определим новый модуль: создадим в той же папке, где находится main.py, новый файл, который назовем message.py. По умолчанию интерпретатор Python ищет модули по ряду стандартных путей, один из которых - это папка главного, запускаемого скрипта. Поэтому, чтобы интерпретатор подхватил модуль message.py, для простоты оба файла поместим в один проект.
Модуль будет называться message. Определим в нем следующий код:
Здесь определена переменная hello и функция print_message, которая в качестве параметра получает текст и выводит его на консоль.
🐍 Укус питона // 💬 Чат // #теория #модули
Что выдает следующая функция списка?
Anonymous Quiz
15%
[20, 30, 40, 50] [10, 20, 40]
12%
[10, 20, 30, 40] [10, 20, 30, 50]
73%
[10, 20, 30, 40] [10, 20, 40]
Определение и подключение модулей. Продолжение.
В основном файле программы - main.py используем данный модуль, смотрим код:
Для использования модуля его надо импортировать с помощью оператора import, после которого указывается имя модуля: import message.
Чтобы обращаться к функциональности модуля, нам нужно получить его пространство имен. По умолчанию оно будет совпадать с именем модуля, то есть в нашем случае также будет называться message.
Получив пространство имен модуля, мы сможем обратиться к его функциям по схеме пространство_имен.функция
Например, обращение к функции print_message() из модуля message, вторая часть примера:
И после этого мы можем запустить главный скрипт main.py, и он задействует модуль message.py. В частности, консольный вывод будет следующим:
Hello all
Message: Hello work
🐍 Укус питона // 💬 Чат // #теория #модули
В основном файле программы - main.py используем данный модуль, смотрим код:
Для использования модуля его надо импортировать с помощью оператора import, после которого указывается имя модуля: import message.
Чтобы обращаться к функциональности модуля, нам нужно получить его пространство имен. По умолчанию оно будет совпадать с именем модуля, то есть в нашем случае также будет называться message.
Получив пространство имен модуля, мы сможем обратиться к его функциям по схеме пространство_имен.функция
Например, обращение к функции print_message() из модуля message, вторая часть примера:
И после этого мы можем запустить главный скрипт main.py, и он задействует модуль message.py. В частности, консольный вывод будет следующим:
Hello all
Message: Hello work
🐍 Укус питона // 💬 Чат // #теория #модули
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь учить Python и не тратить десятки часов на поиск годных уроков?
Тогда залетай на Python | Notes — канал с видеогайдами и уроками по питону, созданный для эффективного и интересного изучения языка: от функций ввода-вывода к реализации интерфейсов и написанию ботов и нейронных сетей
Сложные моменты разбираются на простых примерах — подойдет даже тем, кто не знает основ. Для мидлов и сеньоров публикуют отдельные интересности
Интересное обучение — эффективное обучение. Присоединяйся!
Тогда залетай на Python | Notes — канал с видеогайдами и уроками по питону, созданный для эффективного и интересного изучения языка: от функций ввода-вывода к реализации интерфейсов и написанию ботов и нейронных сетей
Сложные моменты разбираются на простых примерах — подойдет даже тем, кто не знает основ. Для мидлов и сеньоров публикуют отдельные интересности
Интересное обучение — эффективное обучение. Присоединяйся!
Подключение функциональности модуля в глобальное пространство имен.
Другой вариант настройки предполагает импорт функциональности модуля в глобальное пространство имен текущего модуля с помощью ключевого слова from, смотрим пример:
В данном случае мы импортируем из модуля message в глобальное пространство имен функцию print_message(). Поэтому мы сможем ее использовать без указания пространства имен модуля как если бы она была определена в этом же файле.
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули
Другой вариант настройки предполагает импорт функциональности модуля в глобальное пространство имен текущего модуля с помощью ключевого слова from, смотрим пример:
В данном случае мы импортируем из модуля message в глобальное пространство имен функцию print_message(). Поэтому мы сможем ее использовать без указания пространства имен модуля как если бы она была определена в этом же файле.
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули