Декораторы
Декораторы - это функции, которые изменяют поведение других функций. Они полезны для протоколирования, контроля доступа, мемоизации и многого другого.
Asyncio
Модуль asyncio предоставляет основу для асинхронного программирования. Это полезно для связанного с вводом-выводом и высокоуровневого структурированного сетевого кода.
👉
Декораторы - это функции, которые изменяют поведение других функций. Они полезны для протоколирования, контроля доступа, мемоизации и многого другого.
Asyncio
Модуль asyncio предоставляет основу для асинхронного программирования. Это полезно для связанного с вводом-выводом и высокоуровневого структурированного сетевого кода.
👉
Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python
Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере.
Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.
https://habr.com/ru/companies/sberbank/articles/829098/
👉
Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере.
Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.
https://habr.com/ru/companies/sberbank/articles/829098/
👉
🚀 Не надо тратить миллионы на билеты, туры и путешествия. Хватит и грошей.
Ссылка на канал, подписывайтесь: @cheapglobus
Ссылка на канал, подписывайтесь: @cheapglobus
Как правильно записать данные в файл? Что может пойти не так в ином случае?
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию with для открытия файла и возникает проблема, Python гарантирует, что файл будет корректно закрыт.
👉
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию with для открытия файла и возникает проблема, Python гарантирует, что файл будет корректно закрыт.
👉
Метод join
Метод
Основные моменты:
— Метод принадлежит строке, вызывается на разделителе.
— В качестве разделителя можно использовать любую строку.
— В результате получится строка, где между элементами последовательности вставлен разделитель.
👉
Метод
join() позволяет объединить элементы последовательности (списка, кортежа и т.д.) в строку.Основные моменты:
— Метод принадлежит строке, вызывается на разделителе.
— В качестве разделителя можно использовать любую строку.
— В результате получится строка, где между элементами последовательности вставлен разделитель.
👉
Какие различия есть между методами для списков append() и extend()?
Методы append() и extend() для списков имеют разное назначение:
— append() добавляет один элемент в конец списка, принимая в качестве аргумента этот элемент.
my_list.append(10) — добавит число 10 в конец списка my_list.
— extend() расширяет список добавляя в него несколько элементов сразу. В качестве аргумента принимается итерируемый объект (список, кортеж и т.п.).
my_list.extend([10, 20, 30]) — добавит числа 10, 20, 30 в конец списка my_list.
👉
Методы append() и extend() для списков имеют разное назначение:
— append() добавляет один элемент в конец списка, принимая в качестве аргумента этот элемент.
my_list.append(10) — добавит число 10 в конец списка my_list.
— extend() расширяет список добавляя в него несколько элементов сразу. В качестве аргумента принимается итерируемый объект (список, кортеж и т.п.).
my_list.extend([10, 20, 30]) — добавит числа 10, 20, 30 в конец списка my_list.
👉
Напишите функцию, которая будет принимать два списка чисел (вложенный и обычный) и проверять, все ли числа в подсписках вложенного принадлежат множеству чисел второго, обычного списка
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными
👉
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными
👉
Бот-парсер маркетплейса на Python
В этой статье я решил показать один из методов парсинга на Python на примере маркетплейса Wildberries.
Суть подхода в том, что мы будем не разбирать запрошенную html страницу по ссылке, а будем использовать API сайта, который используется сервисом для получения и отображения всех товаров требуемой категории.
https://habr.com/ru/companies/amvera/articles/834582/
👉
В этой статье я решил показать один из методов парсинга на Python на примере маркетплейса Wildberries.
Суть подхода в том, что мы будем не разбирать запрошенную html страницу по ссылке, а будем использовать API сайта, который используется сервисом для получения и отображения всех товаров требуемой категории.
https://habr.com/ru/companies/amvera/articles/834582/
👉
sets.isuperset()
Функция
Она принимает в качестве аргумента другой
Это полезно при работе с множествами для проверки включения, или при проверке покрытия тестами.
Также это используется для проверки включения при работе с данными, чтобы убедиться, что один набор данных полностью покрывает другой по каким-либо критериям.
👉
Функция
sets.isuperset() позволяет проверить, является ли один set подмножеством другого. Она принимает в качестве аргумента другой
set и возвращает boolean значение — True если первый set содержит все элементы второго, и False в противном случае.Это полезно при работе с множествами для проверки включения, или при проверке покрытия тестами.
Также это используется для проверки включения при работе с данными, чтобы убедиться, что один набор данных полностью покрывает другой по каким-либо критериям.
👉
Vibora
Vibora — это фреймворк для создания веб-приложений на языке Python. Он является асинхронным и предоставляет инструменты для создания высокопроизводительных веб-серверов и веб-приложений.
В этом примере мы создаем экземпляр приложения Vibora, определяем обработчик маршрута для корневого URL ("/"), который возвращает строку «Привет, мир!», и запускаем веб-сервер на порту 8000.
👉
Vibora — это фреймворк для создания веб-приложений на языке Python. Он является асинхронным и предоставляет инструменты для создания высокопроизводительных веб-серверов и веб-приложений.
В этом примере мы создаем экземпляр приложения Vibora, определяем обработчик маршрута для корневого URL ("/"), который возвращает строку «Привет, мир!», и запускаем веб-сервер на порту 8000.
👉
Mypy
Mypy — это статический анализатор типов для Python. Он позволяет добавить статическую типизацию в Python и выявлять ошибки, связанные с типами, на этапе компиляции.
Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция
После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.
👉
Mypy — это статический анализатор типов для Python. Он позволяет добавить статическую типизацию в Python и выявлять ошибки, связанные с типами, на этапе компиляции.
Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция
sum_list принимает список целых чисел и возвращает целое число.После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.
👉
Завершение программы
Принимает один необязательный числовой аргумент — код возврата программы. По умолчанию это 0, что означает успешное завершение, а код возврата отличный от нуля сигнализирует об ошибке или нештатной ситуации.
Используется для завершения программы в случае критической ошибки, когда продолжение работы невозможно и позволяет гибко управлять кодами возврата в зависимости от ситуации.
👉
exit() — это функция, которая позволяет завершить выполнение программы и возвратить код возврата операционной системе.Принимает один необязательный числовой аргумент — код возврата программы. По умолчанию это 0, что означает успешное завершение, а код возврата отличный от нуля сигнализирует об ошибке или нештатной ситуации.
Используется для завершения программы в случае критической ошибки, когда продолжение работы невозможно и позволяет гибко управлять кодами возврата в зависимости от ситуации.
👉
Dramatiq
Это библиотека для распределенной обработки задач в асинхронном режиме. Она основана на RabbitMQ и полностью асинхронна, что позволяет выполнять задачи параллельно и с минимальной задержкой.
В этом примере мы используем библиотеку dramatiq для определения и запуска функции
Для выполнения задач необходимо настроить брокера сообщений, например, Redis или RabbitMQ, чем мы не занимались в данном примере.
👉
Это библиотека для распределенной обработки задач в асинхронном режиме. Она основана на RabbitMQ и полностью асинхронна, что позволяет выполнять задачи параллельно и с минимальной задержкой.
В этом примере мы используем библиотеку dramatiq для определения и запуска функции
my_task. Функция принимает аргумент name, который используется в выводе сообщений. Затем мы отправляем задачу с аргументом 'Alice', которая выполняется асинхронно.Для выполнения задач необходимо настроить брокера сообщений, например, Redis или RabbitMQ, чем мы не занимались в данном примере.
👉