Именованные кортежи
Кортежи
Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи
Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется.
#namedtuple
Кортежи
tuple
, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем получать данные, используя только числовые индексы. Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи
namedtuple
из collections
. Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется.
#namedtuple
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Метод
#collections #counter
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Counter
из библиотеки collections
.Метод
Counter.most_common(x)
возвращает x
кортежей, в которых первое значение – элемент, а второе – количество его повторений.#collections #counter
Очистка элементов в последовательности
Встроенный модуль
Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
#itertools
Встроенный модуль
itertools
был создан для работы с более сложными случаями итераторов. Плюс модуля в том, что он быстро работает и оптимизирован в плане памяти. Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
itertools
, а именно метод compress
.Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
True
или 1
, то элемент сохраняется в последовательности, в противном случае — удаляется из нее. #itertools
Режим разработки
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
Например,
Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
-X
для указания различных вариантов реализации.Например,
-X dev
запускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности.Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
str.encode
;— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Упрощение создания операторов сравнения
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
В таком случае достаточно реализовать в классе только
#классы
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
__lt__
, __le__
, __eq__
, __ne__
, __gt__
, __ge__
.Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
total_ordering
из пакета functools
.В таком случае достаточно реализовать в классе только
__lt__
и __eq__
. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
Пишем асинхронных ботов для ВК
Под постом про проект подписчика, связанный с написанием ВК ботов, в комментариях упомянули про модуль
Библиотека является асинхронной и требует минимум кода со стороны разработчика, что позволяет сконцентрироваться на задаче, не тратя силы и время на само взаимодействие с API.
Код, написанный на
#боты #vk
Под постом про проект подписчика, связанный с написанием ВК ботов, в комментариях упомянули про модуль
vkbottle
, про который сейчас и расскажем.Библиотека является асинхронной и требует минимум кода со стороны разработчика, что позволяет сконцентрироваться на задаче, не тратя силы и время на само взаимодействие с API.
Код, написанный на
vkbottle
, чем-то похож на всем знакомый flask
. А пример выше реализует бота, который отвечает сообщением "Здравствуй!" на "Привет". #боты #vk
Перечисления
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
Из документации можно узнать о том, что
Также можно задать геттер через
#enum
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
enum
. Подобные перечисления удобно использовать для хранения списков констант. Из документации можно узнать о том, что
Enum
— это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.Также можно задать геттер через
@property
, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex
.#enum
Простой, мощный и асинхронный веб-фреймворк
Одним из популярных фреймворков для разработки серверной части на Python является FastAPI. К слову, он уже догоняет Django и Flask по звездам на GitHub.
FastAPI предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. Он является одним из самых быстрых фреймворков на Python.
Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу
#модули
Одним из популярных фреймворков для разработки серверной части на Python является FastAPI. К слову, он уже догоняет Django и Flask по звездам на GitHub.
FastAPI предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. Он является одним из самых быстрых фреймворков на Python.
Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу
http://127.0.0.1:8000/
и посмотреть результат. #модули
Мощная декларативная библиотека для работы с датой и временем
Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.
dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.
На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.
Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.
dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.
На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.
Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
Асинхронные запросы с aiohttp
Модуль
Установка
Модуль
#модули
Модуль
aiohttp
представляет из себя асинхронный HTTP клиент/сервер для asyncio
и Python. Он позволяет выполнять асинхронные HTTP запросы, что делает его идеальным инструментом для современных приложений, где требуется высокая производительность и параллелизм.Установка
aiohttp
производится через pip. Чтобы начать делать асинхронные запросы, вам потребуется взаимодействовать с ним с помощью синтаксиса async/await
. Запросы, такие как GET, POST, PUT и DELETE, оформляются чисто и ясно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.Модуль
aiohttp
подходит не только для работы с асинхронными веб-сервисами, но и для асинхронного скрапинга веб-страниц.#модули
spotDL: Автоматизация загрузки музыки из Spotify
Библиотека spotDL - это мощный инструмент для автоматизации процесса загрузки музыки из Spotify. Если вы ищете способ легко и быстро получить аудиотреки с этой популярной стриминговой платформы, то spotDL может стать вашим идеальным партнером.
Установка spotDL также проста и выполняется через
spotDL позволяет выполнять поиск треков, альбомов или плейлистов по запросам и загружать их на ваше устройство. Он также предоставляет возможность выбора желаемого качества аудио и множество других опций для настройки загрузки.
Библиотека spotDL не только удобна для скачивания музыки для личного пользования, но также может быть использована для создания аудиоархивов, подкастов или даже для автоматизации процесса создания музыкальных бэкапов.
#spotify #spotDL #аудио #автоматизация
Библиотека spotDL - это мощный инструмент для автоматизации процесса загрузки музыки из Spotify. Если вы ищете способ легко и быстро получить аудиотреки с этой популярной стриминговой платформы, то spotDL может стать вашим идеальным партнером.
Установка spotDL также проста и выполняется через
pip
. Эта библиотека предоставляет удобные средства для поиска и загрузки музыки из Spotify. Она работает асинхронно и поддерживает асинхронный синтаксис с помощью async/await
, что делает ее отличным инструментом для современных приложений, где требуется автоматизированный доступ к аудиоконтенту.spotDL позволяет выполнять поиск треков, альбомов или плейлистов по запросам и загружать их на ваше устройство. Он также предоставляет возможность выбора желаемого качества аудио и множество других опций для настройки загрузки.
Библиотека spotDL не только удобна для скачивания музыки для личного пользования, но также может быть использована для создания аудиоархивов, подкастов или даже для автоматизации процесса создания музыкальных бэкапов.
#spotify #spotDL #аудио #автоматизация
BeautifulSoup 4: Инструмент для разбора HTML
Библиотека
Установка
Библиотека
BeautifulSoup
, часто называемая bs4
, - инструмент для разбора и анализа HTML и XML документов в Python. Если вы работаете с веб-страницами и вам нужно извлечь информацию из HTML-кода, bs4 отлично подойдет для этого.Установка
bs4
также проста и выполняется через pip. С bs4
вы можете легко извлекать данные из HTML, навигировать по документу, находить и извлекать теги и их атрибуты. Это делает bs4
идеальным инструментом для веб-скрапинга, анализа веб-страниц, извлечения данных и многих других задач.aiogram: Создание Telegram ботов
Библиотека
Установка
В этом примере мы инициализируем бота с помощью
Библиотека
aiogram
предоставляет мощный и удобный способ создания ботов для Telegram на языке Python. Если вы хотите автоматизировать взаимодействие с пользователями или создать бота для своего бизнеса, то aiogram
станет вашим надежным инструментом.Установка
aiogram
производится через pip
. Эта библиотека предоставляет асинхронный интерфейс для работы с Telegram API и позволяет легко создавать и управлять ботами. Вы можете отправлять и получать сообщения, создавать клавиатуры для взаимодействия с пользователями, а также выполнять множество других действий.В этом примере мы инициализируем бота с помощью
aiogram
, создаем обработчик для команды /start
, и запускаем бота с помощью executor.start_polling
. Не забудьте заменить "YOUR_TELEGRAM_BOT_TOKEN"
на токен вашего бота.aiogram
делает создание ботов для Telegram простым и эффективным, что делает его отличным выбором для разработчиков, которые хотят взаимодействовать со своей аудиторией.RabbitMQ: Брокерская система сообщений для асинхронной обработки данных
Для взаимодействия с
Ключевые характеристики
1. Асинхронность:
2. Маршрутизация:
3. Надежность:
4. Поддержка множества протоколов:
RabbitMQ
- это мощная и надежная брокерская система сообщений, которая предназначена для обеспечения асинхронного обмена данными между различными компонентами вашего приложения. Эта брокерская система стала широко используемой в индустрии благодаря своей производительности, надежности и гибкости.Для взаимодействия с
RabbitMQ
на языке программирования Python часто используется библиотека pika
. Pika
предоставляет удобный интерфейс для работы с RabbitMQ
, позволяя отправлять и принимать сообщения в очереди.Ключевые характеристики
RabbitMQ
:1. Асинхронность:
RabbitMQ
предоставляет механизм асинхронной обработки сообщений. Это позволяет разным частям вашего приложения обмениваться данными, не блокируя друг друга.2. Маршрутизация:
RabbitMQ
обеспечивает гибкую маршрутизацию сообщений с использованием обменников (exchanges)
и очередей (queues)
. Это позволяет точно определить, какие сообщения должны быть отправлены в какие очереди.3. Надежность:
RabbitMQ
обеспечивает сохранность данных даже в случае сбоев. Он поддерживает различные стратегии обработки ошибок и перенаправления сообщений.4. Поддержка множества протоколов:
RabbitMQ
поддерживает несколько протоколов связи, включая AMQP (Advanced Message Queuing Protocol)
и MQTT (Message Queuing Telemetry Transport)
. Это делает его универсальным и пригодным для различных типов приложений.SQLAlchemy: Работа с базами данных в Python
Для начала работы с
Исходный код можно скопировать тут
SQLAlchemy
- библиотека для работы с базами данных в Python. Она предоставляет абстрактный и удобный способ взаимодействия с различными системами управления базами данных, такими как PostgreSQL
, MySQL
, SQLite
и другими.SQLAlchemy
поддерживает как синхронные, так и асинхронные операции с базой данных, что делает ее незаменимым инструментом для создания высокопроизводительных приложений, работающих с данными.Для начала работы с
SQLAlchemy
, вам нужно установить библиотеку с помощью pip
. Затем вы можете создать модели данных и определить структуру таблиц в вашей базе данных с использованием Python-классов. SQLAlchemy
предоставляет удобные ORM (Object-Relational Mapping)
инструменты, которые позволяют вам работать с данными в объектно-ориентированном стиле, а не в виде SQL-запросов.Исходный код можно скопировать тут
Playwright: Автоматизации браузерных тестов и взаимодействия с веб-приложениями
Одним из ключевых преимуществ
Для начала работы с
С помощью
Исходный код можно скопировать тут
Playwright
- библиотека, разработанная для автоматизации браузерных тестов и взаимодействия с веб-приложениями с использованием Python. Она предоставляет удобные и абстрактные средства для взаимодействия с различными браузерами, такими как Chrome, Firefox и т.д., позволяя вам создавать автоматизированные сценарии и тесты.Одним из ключевых преимуществ
Playwright
является его кроссплатформенность. Вы можете использовать эту библиотеку на разных операционных системах, что делает ее универсальным инструментом для тестирования и автоматизации веб-приложений.Для начала работы с
Playwright
, вам нужно установить библиотеку командами pip install pytest-playwright
и python -m playwright install
, чтобы библиотека скачала и установила нужные для работы инструменты. Затем вы можете создавать скрипты для автоматизации действий в браузере, такие как открытие страниц, заполнение форм, клики на элементы и многое другое. Playwright
обеспечивает поддержку асинхронных операций, что позволяет создавать эффективные и быстрые автоматизированные сценарии.С помощью
Playwright
, вы можете значительно упростить процесс тестирования и автоматизации веб-приложений, повысив качество вашего программного обеспечения и ускорив разработку.Исходный код можно скопировать тут
discord.py: Создание ботов Discord на Python
С
Для начала работы с
discord.py
- библиотека для создания ботов на платформе Discord. Она предоставляет удобный и абстрактный способ взаимодействия с Discord API, что делает ее отличным выбором для разработчиков, желающих создать собственных ботов и расширить функциональность своих discord серверов.С
discord.py
вы можете легко управлять событиями, сообщениями и голосовыми каналами на серверах Discord. Библиотека обеспечивает полную поддержку Discord API, включая возможность создания текстовых и голосовых каналов, отправки сообщений, управления ролями и многие другие функции.Для начала работы с
discord.py
, вам потребуется установить библиотеку с помощью pip
. Затем вы сможете создавать ботов, настраивать их поведение и взаимодействовать с серверами Discord, используя простой и интуитивно понятный интерфейс.Инкапсуляция
Инкапсуляция - это один из ключевых принципов объектно-ориентированного программирования (ООП). Она позволяет скрыть детали реализации класса и предоставить доступ только к необходимой функциональности через публичные методы и свойства.
Важно понимать, что инкапсуляция способствует безопасности кода, так как она ограничивает прямой доступ к данным класса извне. Это позволяет избегать случайных изменений данных и обеспечивает более надежную архитектуру программы.
Определение интерфейса класса через публичные методы и скрытие внутренних деталей - вот основные задачи инкапсуляции.
#классы #ооп #инкапсуляция
Инкапсуляция - это один из ключевых принципов объектно-ориентированного программирования (ООП). Она позволяет скрыть детали реализации класса и предоставить доступ только к необходимой функциональности через публичные методы и свойства.
Важно понимать, что инкапсуляция способствует безопасности кода, так как она ограничивает прямой доступ к данным класса извне. Это позволяет избегать случайных изменений данных и обеспечивает более надежную архитектуру программы.
Определение интерфейса класса через публичные методы и скрытие внутренних деталей - вот основные задачи инкапсуляции.
#классы #ооп #инкапсуляция
Scrapy: Мощный инструмент для веб-скрапинга на Python
Для начала работы с
Одним из ключевых преимуществ
Исходный код доступен тут
Полный гайд доступен на оффициальном сайте
Scrapy
- это высокоэффективная библиотека на Python, предназначенная для веб-скрапинга и парсинга данных с веб-сайтов. Она предоставляет инструменты для удобной навигации по веб-сайтам, извлечения информации и сохранения ее в структурированном формате. Scrapy
позволяет создавать веб-краулеры и автоматизированные боты для сбора данных с различных источников.Для начала работы с
Scrapy
, вы можете установить библиотеку с помощью pip
. Затем вы можете создавать собственные веб-краулеры, определяя правила для извлечения данных с веб-страниц. Scrapy
поддерживает асинхронную обработку запросов, что позволяет эффективно обрабатывать большие объемы данных.Одним из ключевых преимуществ
Scrapy
является его гибкость и расширяемость. Вы можете настроить скраперы под различные задачи, добавляя новые функции и плагины. Кроме того, Scrapy
обладает встроенной поддержкой для парсинга и обработки данных в различных форматах, таких как HTML
, XML
, JSON
и другие.Исходный код доступен тут
Полный гайд доступен на оффициальном сайте
Pyrogram: Работа с Telegram API на Python
Для начала работы с
Одним из ключевых преимуществ
Документация доступна тут
Pyrogram
- это выдающаяся библиотека на Python, предназначенная для удобной и эффективной работы с Telegram API
. Она предоставляет разработчикам возможность создавать ботов, приложения и скрипты для Telegram Bot API,
а также взаимодействовать с Telegram User API
для отправки сообщений, управления чатами и многих других задач.Для начала работы с
Pyrogram
, вы можете установить библиотеку с помощью pip
. Затем вы можете легко настроить своих ботов и приложения, задавая им различные функциональности. Pyrogram
обеспечивает удобное взаимодействие с API
, что делает разработку ботов и приложений более простой и эффективной.Одним из ключевых преимуществ
Pyrogram
является его высокая производительность и поддержка асинхронных операций. Это позволяет обрабатывать большое количество запросов и взаимодействий с Telegram
в реальном времени.Pyrogram
также предоставляет обширные возможности для работы с различными аспектами Telegram
, включая отправку текстовых сообщений, медиа-файлов, администрирование чатов и многое другое. Благодаря этой библиотеке, разработчики могут создавать мощные и гибкие Telegram-боты и юзерботы, которые отвечают на разнообразные потребности пользователей.Документация доступна тут