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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Атрибут __all__

Атрибут __all__ используется для контроля того, какие элементы модуля экспортируются при импорте с помощью from module import *.
Этот атрибут должен содержать список имен, которые будут экспортированы.

Если __all__ не определен, то при импорте будут экспортированы все имена, не начинающиеся с _.

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

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

🔗 Python tricks
Запускаем ботов, парсеры и небольшие приложения от 45₽/мес!
Всё включено: поддержка 24/7, простое управление и мгновенная активация.

Сравните тарифы:
▶️ Старт (45₽) - 50MB RAM, 50MB SSD
▶️ Базовый (75₽) - 100MB RAM, 110MB SSD
▶️ Профи (450₽) - 2GB RAM, 3GB SSD (и выше!)

Не переплачивайте! Начните с малого и масштабируйтесь по мере роста.

Перейти к выбору тарифа → @Skriptnull

#PythonХостинг #Хостинг #python #Разработка #Бот
Использование defaultdict из модуля collections

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

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

🔗 Python tricks
Использование itertools.groupby для группировки данных

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

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

🔗 Python tricks
Использование collections.Counter для подсчета элементов в списке

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

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

🔗 Python tricks
Использование оператора enumerate() для получения индексов при итерации

Оператор enumerate() позволяет не только итерироваться по элементам списка, но и получать индекс каждого элемента в процессе итерации. Это упрощает работу с данными, когда вам нужно одновременно и элемент, и его индекс.

enumerate() делает процесс итерации с доступом к индексам более удобным и эффективным, уменьшая количество кода и повышая его читаемость.

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

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

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

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

Генераторы списков (list comprehensions) позволяют создавать новые списки на основе существующих в одну строку. Это значительно упрощает код и делает его более читабельным.

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

🔗 Python tricks
Использование itertools.chain() для объединения нескольких итераторов

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

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

🔗 Python tricks
Списковые включения

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

Например у нас есть большой список словарей (объявления контекстной рекламы). Зададим начальное время выборки и конечное.

И попробуем выбрать все объявления, ставка которых выше 600 и дата попадает в выбранный интервал. Затем возьмем первые 1000 элементов полученного списка.

Как видим этот метод работает быстрее.

🔗 Python tricks
math.erfc

Функция math.erfc используется в тех же областях, что и math.erf, но применяется чаще для вычислений вероятностей, связанных с нормальным распределением. Например, в статистике и теории вероятностей для вычисления вероятности того, что случайная величина из нормального распределения примет значение за пределами заданного диапазона.

🔗 Python tricks
Генераторные выражения

Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)

Итог: увеличение производительности более чем в 3 раза.

🔗 Python tricks
Генераторные фунции

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

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

🔗 Python tricks
Использование функции functools.lru_cache для кэширования результатов

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

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

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

Когда вам нужно развернуть список в обратном порядке, можно использовать срезы (slicing) для быстрого и эффективного решения.

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

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

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

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

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

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

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

🔗 Python tricks
Чтение больших файлов построчно с помощью итераторов

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

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

🔗 Python tricks
Быстрая замена значений в столбце DataFrame на основе условий

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

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

🔗 Python tricks
Использование zip для объединения списков

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

Использование zip позволяет легко и эффективно объединять данные, делая код более понятным и лаконичным.

🔗 Python tricks