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

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

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

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

Метод dropna() используется в pandas для удаления строк или столбцов, содержащих пропущенные значения (NaN). По умолчанию метод dropna() возвращает новый DataFrame и не меняет исходный. Если ты хочешь изменить исходный DataFrame, используй аргумент inplace = True.

🔗 Python tricks
Методы сравнения объектов между собой (ч.3)

Метод eq(self, other) предназначен для определения поведения оператора сравнения "==" для объектов определенного класса. Этот метод позволяет сравнивать два объекта и определять, равны ли они друг другу.

🔗 Python tricks
Методы сравнения объектов между собой (ч.4)

Метод ne(self, other) позволяет определить, какие условия должны выполняться для того, чтобы два объекта вашего класса были считаны не равными. В приведенном примере, если хотя бы одна из координат x или y точек отличается, то точки считаются не равными.

Таким образом, использование метода ne(self, other) позволяет гибко управлять сравнением объектов вашего класса и определять, какие именно параметры считать при сравнении.

🔗 Python tricks
Методы сравнения объектов между собой (ч.5)

Метод gt(self, other) вызывается при выполнении операции сравнения "больше" (>). Этот метод позволяет определить, какой из двух объектов больше с точки зрения вашего класса. Например, если у вас есть класс Person с атрибутом age, вы можете определить метод gt(self, other), чтобы сравнивать людей по их возрасту.

🔗 Python tricks
Методы сравнения объектов между собой (ч.6)

В данном примере мы создаем класс Item, у которого есть атрибут value. Метод ge(self, other) определяет поведение оператора >= для сравнения двух объектов типа Item по их значениям. Когда мы пишем item1 >= item2, вызывается метод item1.ge(item2), который сравнивает значения атрибутов value у обоих объектов и возвращает соответствующий результат сравнения.

Этот лайфхак позволяет более гибко управлять сравнением объектов в Python и добавляет возможность определить собственное поведение для оператора >= в контексте вашего класса.

🔗 Python tricks
%%capture

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

🔗 Python tricks
Методы сравнения объектов между собой (ч.7)

В данном примере класс Person определен с атрибутами name и age. Метод hash(self) переопределен для этого класса, чтобы генерировать уникальный хэш на основе значений его атрибутов.

При создании объектов person1 и person3 с одинаковыми значениями атрибутов name и age, у них будет одинаковый хэш, что демонстрирует работу метода hash.

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

🔗 Python tricks
NumPy: stack

numpy.stack() — это функция в библиотеке NumPy, которая объединяет несколько массивов в один. Например, если у тебя есть несколько одномерных массивов, ты можешь использовать numpy.stack() для объединения их в один многомерный массив.

🔗 Python tricks
Методы сравнения объектов между собой (ч.8)

bool(self) — вызывается функцией bool(...) и возвращает True или False в соответствии с реализацией. Если данный метод не реализован в объекте, и объект является какой-либо последовательностью (списком, кортежем и т.д.), вместо него вызывается метод len. Используется, в основном, в условиях if.

🔗 Python tricks
Как в Python создать класс

В Python классы и объекты по смыслу не отличаются от других языков. Нюансы в реализации. Для создания класса в Питоне необходимо написать инструкцию class, а затем выбрать имя.

Для именования классов в Python обычно используют стиль "camel case", где первая буква — заглавная.

🔗 Python tricks
Общие свойства объектов (ч.1)

Любой объект может содержать дополнительную информацию, полезную при отладке или приведении типов.

repr(self) — информационная строка об объекте. Выводится при вызове функции repr(...) или в момент отладки.

🔗 Python tricks
NumPy: where

Ты можешь выполнить поиск определенного значения в массиве и вернуть индексы, которые найдут совпадение. Для поиска в массиве используй метод where().

🔗 Python tricks
Tuple

Кортеж представляет из себя массив фиксированной длины, заданной при создании объекта. Элементами кортежа также могут быть объекты любых типов. В отличие от списка, кортеж в памяти представлен одним объектом. Поскольку нет изменяемой части, которую надо перемещать между блоками. Да, и методов для изменения элементов у кортежа так же нет. Но если сам элемент принадлежит к изменяемому типу, его все же можно изменить.

🔗 Python tricks
Dict

Словарь представляет из себя массив ключей и массив значений, где каждый ключ связан с одним значением. На ключ накладывается ограничение по уникальности в пределах словаря. Поэтому ключами могут быть объекты только неизменяемых типов. Значением же может быть объект любого типа.

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

🔗 Python tricks
Генераторные фунции (generator functions)

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

Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.

🔗 Python tricks
Общие свойства объектов (ч.1)

Любой объект может содержать дополнительную информацию, полезную при отладке или приведении типов.

repr(self) — информационная строка об объекте. Выводится при вызове функции repr(...) или в момент отладки.

🔗 Python tricks
Общие свойства объектов (ч.2)

str(self) — вызывается при вызове функции str(...), возвращает строковый объект.

🔗 Python tricks
writable()

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

🔗 Python tricks
Наследование

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

Мы все прекрасно знаем, что котики, к примеру, любят всё ронять, а собакены — рыть землю. Создадим два соответствующих класса-наследника.

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

🔗 Python tricks
Что не так с этим кодом и зачем это нужно

Этот код вызывает ошибку утверждения assert с сообщением «error», если debug равен True. debug — это встроенная переменная Python, которая является истинной, если к интерактивной консоли или скрипту был присоединен флаг оптимизации -O. Для типичных скриптов в режиме отладки эта переменная равна True. Если оптимизация включена, то интерпретатор Python игнорирует все операторы утверждения assert, поэтому этот код не вызовет ошибку в optimized mode.

Такой код может быть использован для проверки инвариантов в программе или для отладки кода. Если утверждение не выполняется и вызывается AssertionError, это означает, что в программе произошло что-то непредвиденное, что нарушило заданное утверждение, и программа остановится с сообщением об ошибке.

🔗 Python tricks
Создание последовательностей (ч.2)

getitem(self, key) — вызывается при обращении к элементу в последовательности по его ключу (индексу). Метод должен выбрасывать исключение TypeError, если используется некорректный тип ключа, KeyError, если данному ключу не соответствует ни один элемент в последовательности.

🔗 Python tricks