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
Библиотека SymPy

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

SymPy широко используется в научных вычислениях, инженерии, образовании и других областях, где требуются символьные математические вычисления.

Основные области применения SymPy:
— Аналитическая геометрия, алгебра и теория чисел.
— Решение уравнений и систем уравнений.
— Символьное дифференцирование и интегрирование.
— Работа с пределами, рядами, преобразованиями.
— Векторный анализ, тензоры.
— Физические вычисления и моделирование.
— Теория вероятностей и статистика.
— Обработка и визуализация математических данных.

🔗 Python tricks
Geopandas

Geopandas — это библиотека для работы с геопространственными данными. Она базируется на библиотеке Pandas и интегрируется с другими инструментами геоинформатики, такими как Shapely, Fiona, PyProj.

Geopandas позволяет эффективно работать с географическими данными в виде векторных и растровых слоев.

Основные области применения:
— Картография и визуализация пространственных данных.
— Анализ и обработка данных, содержащих географическую привязку.
— Работа с геометрическими объектами: точки, линии, полигоны.
— Преобразование и проектирование геоданных.
— Пространственный анализ и геостатистика.
— Моделирование географических процессов.
— ГИС-приложения и веб-картография.

🔗 Python tricks
list.extend

Метод extend() добавляет все элементы итерируемого объекта (список, кортеж, строку и т. д.) в конец списка. Данный метод изменяет исходный список. Он не возвращает никакого значения.

🔗 Python tricks
Pymystem3

Библиотека от Яндекса имеет точно такой же функционал, как и Pymorphy2, и является ее альтернативой. Pymystem3 быстро и качественно распознает части речи и лексемы слова.

🔗 Python tricks
Loguru

Инструмент для удобного и простого логирования данных. В Python есть встроенная библиотека logging, но многие разработчики считают ее неудобной из-за сложных конфигураций логов, неудобства настроек разного уровня логирования и ротации файлов логов. Поэтому они пишут логи через loguru. Библиотека имеет широкие настройки форматирования, удобна в работе и поддерживает множество функций, например архивирование файлов с логами.

🔗 Python tricks
dateparser

Инструмент находит и определяет даты в массиве данных. Он работает с разными форматами записи: и строгими, и «человекопонятными». Dateparser сможет найти дату и формата «25.06.1999», и формата «вчера» или «месяц назад». В основном библиотека используется при парсинге данных.

🔗 Python tricks
Pydantic

Помогает не только обрабатывать данные: она вносит в Python строгую типизацию и четкость в работе. Но обычно ее используют для валидации и парсинга: Pydantic проверяет и приводит данные из других сервисов к единому виду. Разнородные данные сложно воспринимать и программе, и человеку.

🔗 Python tricks
Дорогие подписчики, с праздником!

🔗 Python tricks
Loguru

Инструмент для удобного и простого логирования данных. В Python есть встроенная библиотека logging, но многие разработчики считают ее неудобной из-за сложных конфигураций логов, неудобства настроек разного уровня логирования и ротации файлов логов. Поэтому они пишут логи через loguru. Библиотека имеет широкие настройки форматирования, удобна в работе и поддерживает множество функций, например архивирование файлов с логами.

🔗 Python tricks
responses

Выше мы говорили про requests — это ее противоположность. Responses помогает генерировать различные ответы на запросы и затем анализировать их результаты. В отличие от requests, responses используется в основном при тестировании — помогает проверять, как приложение реагирует на разные ответы внешнего сервиса.

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

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

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

🔗 Python tricks
Моржовый оператор (Walrus Operator)

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

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

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

🔗 Python tricks
Библиотека scikit-image

scikit-image — это библиотека для обработки изображений. scikit-image также удобна для применения в задачах компьютерного зрения.

Библиотека содержит множество полезных инструментов для работы с изображениями, включая:
— Фильтрация и преобразования изображений (размытие, поворот, масштабирование и т. д.).
— Сегментация изображений и анализ регионов.
— Обнаружение особых точек и линий (краев, углов, границ).
— Морфологические операции.
— Анализ текстур и цветов.
— Восстановление изображений и удаление шумов.

🔗 Python tricks
filter

Функция filter() выбирает элементы из итерируемого объекта (списка, кортежа и т. д.) на основе выходных данных функции. Функция применяется к каждому элементу итерируемого объекта.

🔗 Python tricks
py-spy

Следит за тем, что и как выполняет программа, сколько времени и ресурсов она тратит на разные задачи, мониторит ее работу. Py-spy сначала обращается к системе компьютера, а затем сохраняет и выводит полученную информацию, которую можно использовать в работе. Вам не нужно перезагружать или модифицировать работающую программу: инструмент помогает получать информацию, не затрагивая исходный код. Библиотека удобна при поиске багов, особенно если нельзя переписать код.

🔗 Python tricks
Pympler

Мониторит и анализирует память, которая используется при исполнении кода программ на Python. Инструмент находит ее избыточное потребление, утечки и другие баги. С помощью Pympler можно узнать все о размере и длительности процессов приложения на Python за время работы.

🔗 Python tricks
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.

Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.

🔗 Python tricks
Метод swapcase()

Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.

Результатом будет строка 'hELLO, wORLD!'.

🔗 Python tricks
Функция compress

Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.

Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].

🔗 Python tricks
Метод math.perm()

Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.

Синтаксис:
math.perm(n, k)

Где:
n: Количество элементов из которых выбираются k элементов.
k: Количество элементов, которые выбираются.

В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.

🔗 Python tricks
Сцепление исключений

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

В примере на картинке, если возникает ZeroDivisionError, мы попадаем в блок except, а затем выполняем вложенный код, который вызывает ValueError. С помощью ключевого слова from мы указываем, что исключение ValueError является следствием (частью) исключения ZeroDivisionError. Таким образом, информация об исключении ZeroDivisionError сохраняется.

🔗 Python tricks