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
Использование пакетной обработки запросов (batch processing) для ускорения вставки данных в базу

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

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

🔗 Python tricks
Использование транзакций для повышения надежности и эффективности работы с базой данных

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

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

🔗 Python tricks
Использование ORM SQLAlchemy для работы с базами данных вместо "чистого" SQL

SQLAlchemy позволяет вам взаимодействовать с базами данных на уровне объектов Python, что упрощает работу и делает код более читабельным и безопасным.

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

🔗 Python tricks
Использование контекстного менеджера with с соединениями и курсорами в SQLite

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

🔗 Python tricks
Использование пакетной вставки данных в базу данных с помощью метода executemany()

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

Этот подход поможет ускорить взаимодействие с базами данных при большом объеме данных.

🔗 Python tricks
Использование транзакций для безопасного обновления базы данных

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

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

🔗 Python tricks
Объясните, что такое monkey patching и приведите пример

Monkey patching — это техника изменения поведения кода во время выполнения путем динамической замены или добавления методов или атрибутов в существующем объекте. Эта техника может быть полезна в том случае, когда изменения не могут быть внесены в существующий код, и требует минимальных изменений в существующем коде.

🔗 Python tricks
Что такое магические методы dunder

Магические методы, также известные как «dunder» (double underscore) методы в Python, это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Они позволяют определить, как объекты этого класса будут вести себя в различных контекстах, например, при использовании операторов Python, таких как +, -, *, / и т.д., при вызове функций и методов, при сериализации и многое другое.

🔗 Python tricks
Как начать отладку при утечке памяти в рабочем приложении

Для отладки утечек памяти в Python можно использовать инструменты, такие как Memory Profiler или objgraph.

Запустите вашу программу с помощью команды python -m memory_profiler my_script.py. Будет выведен подробный отчет о том, сколько памяти используется в каждой строке программы, а также общее использование памяти и любые утечки.

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

🔗 Python tricks
В каких ситуациях возникает исключение NotImplementedError

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

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

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

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

🔗 Python tricks
Конструктор

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

В качестве Питоновского конструктора выступает метод init()

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

Метод lt(self, other) в Python позволяет определить порядок сортировки объектов при использовании встроенных функций сортировки, таких как sorted(). При реализации этого метода в классе можно указать, какие атрибуты объекта должны учитываться при сравнении с другими объектами для определения их относительного порядка.

Например, предположим, что у нас есть класс Point, который представляет собой точку на плоскости и имеет атрибуты x и y. Мы можем определить метод lt(self, other) в классе Point, чтобы при сравнении двух точек учитывался их порядок по оси x, а в случае равенства координат по оси x - по оси y.

🔗 Python tricks
Использование SQLAlchemy для автоматического создания таблиц из моделей

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

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

🔗 Python tricks
Использование ORM (Object-Relational Mapping) для упрощения работы с базами данных

ORM (Object-Relational Mapping) позволяет разработчикам работать с базами данных через объектно-ориентированные интерфейсы, что значительно упрощает взаимодействие с данными и уменьшает количество SQL-запросов, которые необходимо писать вручную.

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

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

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

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

🔗 Python tricks
Использование метода @property для создания геттеров

В Python можно создавать геттеры и сеттеры для полей класса без явного объявления методов вроде get_name и set_name. Для этого используется декоратор @property, который позволяет обращаться к методу как к атрибуту, сохраняя при этом контроль над доступом к данным.

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

🔗 Python tricks
Использование метода __repr__ для удобного отображения объектов

Когда вы разрабатываете классы, бывает полезно сделать так, чтобы объекты этого класса имели осмысленное текстовое представление при выводе. Для этого можно переопределить метод repr, который отвечает за представление объекта в строковом виде.

Этот лайфхак будет полезен разработчикам, которые часто выводят объекты в отладочных целях. Вместо отображения стандартной информации о памяти (например, <Person object at 0x...>), вы получите наглядное описание объекта. Это улучшает читаемость кода, особенно при отладке и логировании.

🔗 Python tricks
Наследование с использованием метода super()

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

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

🔗 Python tricks
math.floor

math.floor — это функция в модуле math, которая округляет число вниз до ближайшего целого. Если число уже является целым, оно остается неизменным. Если число имеет дробную часть, оно округляется вниз до ближайшего меньшего целого.

🔗 Python tricks
Использование тернарного оператора для компактного условия в одну строку

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

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

🔗 Python tricks