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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Использование метода __complex__(self)

Метод complex(self) в Python позволяет определить пользовательское поведение при преобразовании объекта в комплексное число. Этот метод полезен для пользовательских классов, которые хотят представлять свои данные в комплексной форме.

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

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

🔗 Python tricks
Эффективное использование метода ior(self, other)

Метод ior(self, other) в Python позволяет определить поведение оператора побитового ИЛИ с присваиванием (|=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

Метод ior является специальным методом, который позволяет реализовать операцию побитового ИЛИ с присваиванием. Когда оператор |= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

🔗 Python tricks
Эффективное использование метода __irshift__(self, other)

Метод irshift(self, other) в Python позволяет определить поведение оператора побитового сдвига вправо с присваиванием (>>=) для пользовательских классов. Этот метод полезен для работы с битовыми операциями и манипуляциями с данными, которые требуют эффективного изменения битовых представлений.

Метод irshift является специальным методом, который позволяет реализовать операцию побитового сдвига вправо с присваиванием. Когда оператор >>= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом сдвига.

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

🔗 Python tricks
Эффективное использование метода __ixor__(self, other)

Метод ixor(self, other) в Python позволяет определить поведение оператора побитового исключающего ИЛИ с присваиванием (^=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

Метод ixor является специальным методом, который позволяет реализовать операцию побитового исключающего ИЛИ с присваиванием. Когда оператор ^= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

🔗 Python tricks
math.fsum

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

🔗 Python tricks
Эффективное использование метода __iand__(self, other)

Метод iand(self, other) в Python позволяет определить поведение оператора побитовой операции "и" с присваиванием (&=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

Метод iand является специальным методом, который позволяет реализовать операцию побитового "и" с присваиванием. Когда оператор &= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

🔗 Python tricks
Эффективное использование метода __irshift__(self, other)

Метод irshift(self, other) в Python позволяет определить поведение оператора побитового сдвига вправо с присваиванием (>>=) для пользовательских классов. Этот метод полезен для работы с битовыми операциями и манипуляциями с данными, которые требуют эффективного изменения битовых представлений.

Метод irshift является специальным методом, который позволяет реализовать операцию побитового сдвига вправо с присваиванием. Когда оператор >>= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом сдвига.

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

🔗 Python tricks
Эффективное использование метода __ilshift__(self, other)

Метод ilshift(self, other) в Python позволяет определить поведение оператора побитового сдвига влево с присваиванием (<<=) для пользовательских классов. Этот метод полезен для работы с битовыми операциями и манипуляциями с данными, которые требуют эффективного изменения битовых представлений.

Метод ilshift является специальным методом, который позволяет реализовать операцию побитового сдвига влево с присваиванием. Когда оператор <<= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом сдвига.

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

🔗 Python tricks
Эффективное использование метода __ipow__(self, other[, modulo])

Метод ipow(self, other[, modulo]) в Python позволяет определить поведение оператора возведения в степень с присваиванием (=) для пользовательских классов. Этот метод может включать необязательный параметр modulo, который позволяет выполнять возведение в степень по модулю. Этот лайфхак полезен для работы с числовыми данными, особенно в математических и криптографических приложениях.

Метод __ipow__ является специальным методом, который позволяет реализовать операцию возведения в степень с присваиванием. Когда оператор
= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом возведения в степень. Если указан параметр modulo, результат операции будет взят по модулю.

Использование метода ipow позволяет легко реализовать операцию возведения в степень с присваиванием для пользовательских классов.

🔗 Python tricks
Эффективное использование метода __imod__(self, other)

Метод imod(self, other) в Python позволяет определить поведение оператора взятия остатка с присваиванием (%=) для пользовательских классов. Это полезно для работы с числовыми данными и структурами, где операции взятия остатка и обновления значений являются обычными задачами.

Метод imod — это специальный метод, который позволяет реализовать операцию взятия остатка с присваиванием. Когда оператор %= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

🔗 Python tricks
Protocol

Класс Protocol - это способ формального определения протоколов, введенный в версии 3.8.

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

Сейчас используется в основном в стандартной библиотеке.

На изображении предоставлен пример использования Protocol для определения простого протокола логгирования.

🔗 Python tricks
Метод count()

count() - простой и удобный способ получить число вхождений элемента в последовательности за линейное время. Полезен при подсчете статистики, анализе данных и других задачах.

Метод принимает в качестве аргумента элемент, количество которого нужно посчитать и возвращает число - количество найденных вхождений элемента.

Работает для списков, кортежей, строк.

🔗 Python tricks
Эффективное использование метода __iand__(self, other)

Метод iand(self, other) в Python позволяет определить поведение оператора побитовой операции "и" с присваиванием (&=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

Метод iand является специальным методом, который позволяет реализовать операцию побитового "и" с присваиванием. Когда оператор &= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

🔗 Python tricks
Эффективное использование метода ifloordiv(self, other)

Метод ifloordiv(self, other) в Python позволяет определить поведение оператора целочисленного деления с присваиванием (//=) для пользовательских классов. Это особенно полезно для работы с числовыми данными и структурами, где целочисленное деление и обновление значений являются обычными задачами.

Метод ifloordiv является специальным методом, который позволяет реализовать целочисленное деление с присваиванием. Когда оператор //= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом целочисленного деления.

Использование метода ifloordiv позволяет легко реализовать целочисленное деление с присваиванием для пользовательских классов. Это делает код более чистым и удобным для чтения, а также улучшает производительность за счет изменения объектов на месте.

🔗 Python tricks
del

del – это оператор, который используется для удаления объектов. Он может применяться к элементам списка, срезам списка, переменным, атрибутам и элементам словаря. В контексте списков, del используется для удаления элементов или срезов из списка по индексу или диапазону индексов.

🔗 Python tricks
list.clear

Метод clear используется для удаления всех элементов из списка, оставляя его пустым. Этот метод очень удобен, когда нужно очистить список, не создавая новый объект.

🔗 Python tricks
Эффективное использование метода __imatmul__(self, other)

Метод imatmul(self, other) в Python позволяет определить поведение оператора матричного умножения с присваиванием (@=) для пользовательских классов. Это полезно для работы с матрицами и другими структурами данных, поддерживающими матричное умножение, делая код более выразительным и эффективным.

Метод imatmul — это специальный метод, который позволяет реализовать матричное умножение с присваиванием. Когда оператор @= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом матричного умножения.

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

🔗 Python tricks
Реализация операции вычитания на месте для пользовательского класса

Метод isub в Python используется для реализации операции вычитания на месте (оператора -=). Этот метод позволяет изменять объект "на месте", что может быть полезно для оптимизации производительности и управления памятью.

Рассмотрим пример, в котором у нас есть класс, представляющий пользовательский список чисел. Мы хотим поддерживать операцию вычитания на месте как с обычными числами Python (int), так и с другими экземплярами нашего класса.

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

🔗 Python tricks
Расширение возможности операции побитового исключающего "или" для пользовательских объектов

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

Рассмотрим пример, в котором у нас есть класс, представляющий пользовательские битовые данные, и мы хотим поддерживать операцию побитового исключающего "или" как с обычными числами Python (int), так и с другими экземплярами нашего класса.

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

🔗 Python tricks
Сравнение быстродействия def и lambda-функций Python. Производные функции

Иными словами — функция второго уровня вложенности служит для многократного вызова и создания во время каждого функции третьего уровня вложенности.

🔗 Python tricks
Конкатенация строк

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

Более эффективный подход к решению этой задачи заключается в использовании функции join()

🔗 Python tricks