Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Colorama

Colorama — это библиотека для Python, которая предоставляет простой способ добавить цвета и стили текста при выводе в терминале. Она особенно полезна для создания красочного и информативного текстового интерфейса в командной строке.

Для использования Colorama вам нужно установить библиотеку с помощью pip:

pip install colorama

После установки вы можете начать использовать Colorama в своем коде Python. Colorama делает работу с цветами и стилями текста в терминале гораздо более удобной и читаемой.

🔗 Python tricks
Memray

Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.

Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.

В примере мы используем декоратор memray.profile, который будет отслеживать все выделение и освобождение памяти внутри функции my_func().

При запуске этого кода memray выведет отчёт.
🔗 Python tricks
uuid

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.

Вполне недурно для двух строк кода.
🔗 Python tricks
Модуль copy

Операция присваивания не копирует объект, он лишь создаёт ссылку на объект. Для изменяемых коллекций, или для коллекций, содержащих изменяемые элементы, часто необходима такая копия, чтобы её можно было изменить, не изменяя оригинал. Данный модуль предоставляет общие (поверхностная и глубокая) операции копирования.
🔗 Python tricks
issubclass()

Функция принимает два параметра:
class — класс, который нужно проверить.
classinfo — класс, тип или кортеж классов и типов.

issubclass() проверяет, является ли аргумент класса (class) подклассом другого класса (classinfo) и возвращает значение типа bool (True/False).
🔗 Python tricks
Модуль glob

Модуль glob находит все пути, совпадающие с заданным шаблоном в соответствии с правилами, используемыми оболочкой Unix. Обрабатываются символы "*" (произвольное количество символов), "?" (один символ), и диапазоны символов с помощью []. Для использования тильды "~" и переменных окружения необходимо использовать os.path.expanduser() и os.path.expandvars().
🔗 Python tricks
Vibora

Vibora — это фреймворк для создания веб-приложений на языке Python. Он является асинхронным и предоставляет инструменты для создания высокопроизводительных веб-серверов и веб-приложений.

В этом примере мы создаем экземпляр приложения Vibora, определяем обработчик маршрута для корневого URL ("/"), который возвращает строку «Привет, мир!», и запускаем веб-сервер на порту 8000.
🔗 Python tricks
setattr()

Функция setattr() в Python используется для установки значения атрибута объекта. Она позволяет изменять атрибуты объекта, даже если вы не знаете их заранее.

Синтаксис функции setattr() выглядит следующим образом:

setattr(object, attribute, value)

object — объект, у которого вы хотите изменить атрибут.
attribute — имя атрибута, который вы хотите установить.
value — значение, которое вы хотите присвоить атрибуту.
🔗 Python tricks
re.split()

re.split() — это функция из модуля re (регулярные выражения), которая позволяет разделять строку на подстроки с использованием регулярных выражений в качестве разделителя. Функция re.split() принимает два аргумента: регулярное выражение и строку, которую вы хотите разделить.

re.split() также может использовать более сложные регулярные выражения. Например, если вы хотите разделить строку по любым пробельным символам (пробелам, табуляциям и др.),

re.split() возвращает список подстрок, полученных после разделения. Вы можете затем использовать этот список в вашем коде для дальнейшей обработки данных.

🔗 Python tricks
aiohttp

Библиотека aiohttp — это асинхронный HTTP-клиент/сервер для asyncio и Python. Она поддерживает как клиентские, так и серверные веб-сокеты “из коробки” без коллбэков. Веб-сервер имеет промежуточное ПО (middlewares), сигналы и подключаемую маршрутизацию.

В этом примере создается веб-приложение с помощью aiohttp.web.Application, добавляются маршруты для обработки запросов к корневому URL-адресу (/) и URL-адресу с именем (/{name}). Функция handle обрабатывает запросы, извлекает имя из параметров запроса (или использует значение по умолчанию “Anonymous”) и возвращает ответ с текстом приветствия.
🔗 Python tricks
Модуль os.path

Модуль реализует некоторые полезные функции для имён путей. Для чтения или записи файлов open(), а для доступа к файловой системе модуль os. Параметры пути могут передаваться в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде Юникод строк. К сожалению, некоторые имена файлов не могут быть представлены в виде строк в Unix, поэтому приложения, которым необходимо поддерживать произвольные имена файлов в Unix, должны использовать байтовые объекты для представления имён путей.

И наоборот, использование байтовых объектов не может представлять все имена файлов в Windows (в стандартной кодировке mbcs), поэтому приложения Windows должны использовать строковые объекты для доступа ко всем файлам.
🔗 Python tricks
Библиотека Typer

Typer — это библиотека для создания командных интерфейсов приложений на Python.
Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help.

Основные возможности Typer:
— Декоратор @typer.command() для определения команд и подкоманд.
— Автоматический парсинг аргументов и опций.
— Валидация и tipped annotations для аргументов и опций.
— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.

Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.
🔗 Python tricks
SHAP

SHAP (SHapley Additive exPlanations) — это библиотека для объяснения моделей машинного обучения, позволяющая интерпретировать прогнозы моделей, понимать, какие факторы вносят наибольший вклад в принятие решений моделью. Это полезный инструмент для анализа и интерпретации моделей, особенно в задачах, где объяснение результатов модели важно, например, в медицинских и финансовых приложениях.

Для использования библиотеки SHAP в Python вам необходимо установить ее и импортировать.

🔗 Python tricks
Пророк

Пророк (Prophet) — это библиотека для анализа и прогнозирования временных рядов, разработанная командой Facebook. Она предоставляет простой и эффективный способ анализа данных временных рядов с трендами, сезонными компонентами и праздниками. Вы можете использовать библиотеку Prophet на Python для выполнения прогнозирования временных рядов.

В этом коде мы создаем искусственный временной ряд с линейным трендом и недельной сезонностью. Затем мы используем библиотеку Prophet для анализа и прогнозирования этого временного ряда. Код визуализирует оригинальные данные, тренд, сезонность и прогноз на будущие 30 дней.

🔗 Python tricks
Инкапсуляция

Инкапсуляция — это принцип ограничения доступа к части реализации объекта от внешнего кода.
Это позволяет предотвратить непреднамеренное изменение внутреннего состояния объекта.

В Python инкапсуляция реализуется с помощью:
— Префикса _ в именах атрибутов и методов класса. Это сигнализирует, что они предназначены только для внутреннего использования в классе.
— Двойного префикса __ в именах атрибутов методов (например, __private_method). Такая запись делает их недоступными извне класса.
Свойств (property) для контролируемого доступа к атрибутам класса.

🔗 Python tricks
Модуль json

JSON (JavaScript Object Notation) это легковесный формат обмена данными. Людям его легко читать и вести в нем записи, а компьютеры запросто справляются с его синтаксическим анализом и генерацией.

В Python есть ряд пакетов, поддерживающих JSON, в частности metamagic.json, jyson, simplejson, Yajl-Py, ultrajson, и json.
🔗 Python tricks
Модуль pickle

Модуль pickle реализует мощный алгоритм сериализации и десериализации объектов Python. "Pickling" - процесс преобразования объекта Python в поток байтов, а "unpickling" - обратная операция, в результате которой поток байтов преобразуется обратно в Python-объект. Так как поток байтов легко можно записать в файл, модуль pickle широко применяется для сохранения и загрузки сложных объектов в Python.
🔗 Python tricks
Моржовый оператор (Walrus Operator)

Моржовый оператор (Walrus operator) — это оператор :=, введенный в версии 3.8. Он позволяет одновременно присвоить значение переменной и вернуть его.

Синтаксис выглядит так: имя_переменной := выражение. Справа вычисляется выражение и присваивается переменной слева
Переменная доступна в остальной части выражения после оператора.

Это удобно при работе с выражениями со сложными вложенными операциями. Позволяет избежать повторного вычисления.

🔗 Python tricks
YAML

YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.

В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.

Модуль PyYAML позволяет использовать YAML в Python.

PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
🔗 Python tricks
Географические карты в Python

Geoplotlib — это библиотека для создания географических визуализаций и карт. Она предоставляет простой и удобный интерфейс для создания различных типов географических карт, например: точечные карты, тепловые карты и т. д.

В этом примере мы использовали функцию geoplotlib.kde(). Эта функция создает тепловую карту, в качестве аргумента она принимает данные с географическими координатами, а также параметры bw (ширина полосы) и cut_below (порог отсечения).
Ширина полосы определяет степень сглаживания тепловой карты, а порог отсечения позволяет убрать из визуализации области с низкой плотностью точек.

Результатом работы кода будет интерактивная тепловая карта, на которой отображены области с наибольшей концентрацией фотографий. Вы можете масштабировать и перемещать карту для изучения данных.

🔗 Python tricks
NotImplemented

NotImplemented представляет собой специальный объект-сентинель (или маркер), который обычно используется в методах классов или функциях для указания на то, что конкретная функциональность или реализация пока не были предоставлены. Это может быть полезным при создании абстрактных классов или интерфейсов, когда вы хотите, чтобы подклассы предоставляли свои собственные реализации методов.

🔗 Python tricks