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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Обычные арифметические операторы (ч.8)

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

🔗 Python tricks
Frozenset

frozensets используются для создания неизменяемых множеств.

Основные особенности frozensets:

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

Здесь мы создали frozenset с элементами. Попытка добавить элемент вызывает ошибку, так как frozensets неизменяемы. Затем frozenset используется как ключ в словаре.

🔗 Python tricks
Генераторы коллекций

Генераторы коллекций позволяют эффективно создавать большие коллекции данных без необходимости хранить всю коллекцию в памяти.
Вместо этого генератор возвращает элементы коллекции по одному при каждом вызове next().

Генераторы коллекций создаются с помощью функций-генераторов, использующих ключевое слово yield.

В примере каждый вызов next() на генераторе squares_gen возвращает следующий квадрат и сохраняет текущее состояние генератора.

🔗 Python tricks
Pygal

Pygal - это библиотека для визуализации данных с помощью SVG.
Она позволяет строить разнообразные интерактивные графики, такие как линейные, столбчатые, круговые диаграммы.

Этот код создает объект диаграммы line_chart, добавляет в нее несколько рядов данных, задает заголовок, подписи по оси X и сохраняет результат в файл SVG.

В итоге получается интерактивный график изменения доли браузеров за определенный период.

🔗 Python tricks
Удаление префиксов и суффиксов

Методы .removeprefix() и .removesuffix() служат для удаления префикса или суффикса из строки соответственно. Эти методы были добавлены в Python 3.9.

Методы возвращают новую строку без указанного префикса или суффикса. Исходная строка не изменяется.

Если строка не начинается/заканчивается на указанный префикс/суффикс, возвращается копия исходной строки.

Методы вызывают исключение ValueError, если префикс/суффикс пустой.

🔗 Python tricks
Ruff

Ruff - это линтер для проверки качества кода.
Он помогает обнаруживать ошибки, следовать стилистическим рекомендациям и в целом писать более чистый и читаемый код.

Ruff можно использовать для проверки как отдельных файлов, так и целых проектов.

🔗 Python tricks
Memray

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

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

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

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

🔗 Python tricks
Аннотация типов

Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.

Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.

Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.

Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).

🔗 Python tricks
object

object - это встроенный класс, от него наследуются сразу все новые классы, если явно не указан другой базовый класс.

У объектов класса object есть методы init, str, repr и другие. Их можно переопределять в дочерних классах.

Атрибуты класса объявляются внутри класса, но вне всех методов. Атрибуты экземпляра объявляются в init.

Чтобы использовать класс object в своем коде, достаточно создать класс, унаследованный от object.

🔗 Python tricks
fileno()

Метод fileno() возвращает файловый дескриптор для данного файла. Файловый дескриптор — это целочисленное значение, которое однозначно определяет открытый файл в операционной системе. Он используется для операций ввода/вывода с файлом.

🔗 Python tricks
math.pow

math.pow — это функция в модуле math в Python, которая возводит число в заданную степень. Эта функция возвращает результат в виде числа с плавающей точкой (тип float). Однако есть и альтернативный способ возвести число в степень в Python, используя оператор **.

🔗 Python tricks
Обычные арифметические операторы (ч.9)

Этот лайфхак полезен при работе с комплексными числами или другими типами данных, где определение операций возведения в степень и взятия по модулю имеет смысл. Переопределение метода pow позволяет объекту поддерживать стандартные операции возведения в степень и взятия по модулю в Python.

🔗 Python tricks
Обычные арифметические операторы (ч.10)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция сдвига влево имеет смысл. Переопределение метода lshift позволяет объекту поддерживать стандартную операцию сдвига влево в Python.

🔗 Python tricks
Обычные арифметические операторы (ч.11)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция сдвига вправо имеет смысл. Переопределение метода rshift позволяет объекту поддерживать стандартную операцию сдвига вправо в Python.

🔗 Python tricks
Обычные арифметические операторы (ч.12)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового И имеет смысл. Переопределение метода and позволяет объекту поддерживать стандартную операцию побитового И в Python.

🔗 Python tricks
writelines

В Python метод writelines() используется для записи списка строк в файл. Каждая строка из списка записывается последовательно, без добавления дополнительных символов (например, новых строк) между строками, если они не включены в сами строки.

🔗 Python tricks
Обычные арифметические операторы (ч.12)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового исключающего ИЛИ имеет смысл. Переопределение метода xor позволяет объекту поддерживать стандартную операцию побитового исключающего ИЛИ в Python.

🔗 Python tricks
NumPy: array_split

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

🔗 Python tricks
math.remainder

Функция math.remainder возвращает остаток от деления двух чисел. В отличие от оператора %, который возвращает остаток согласно правилам деления целых чисел, math.remainder учитывает точное представление чисел с плавающей точкой и возвращает остаток, сохраняя знак делимого.

🔗 Python tricks
Обычные арифметические операторы (ч.13)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового ИЛИ имеет смысл. Переопределение метода or позволяет объекту поддерживать стандартную операцию побитового ИЛИ в Python.

🔗 Python tricks
Использование defaultdict для работы со словарями

При работе со словарями часто возникает необходимость инициализировать значения по умолчанию, чтобы избежать ошибок при попытке доступа к несуществующим ключам. В таких случаях полезно использовать defaultdict из модуля collections.

Использование defaultdict упрощает код и избавляет от необходимости вручную проверять существование ключей в словаре, делая его более читаемым и эффективным.

🔗 Python tricks