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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Конкатенация строк

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

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

🔗 Python tricks
Словарь и set comprehensions

Словарю нужны ключ и значение.

Определяем ключ и значение в expression.

Синтаксис set comprehension не сильно отличается от list comprehension. Мы просто используем фигурные скобки вместо квадратных.

🔗 Python tricks
whylogs

whylogs
это библиотека для мониторинга и аудита машинного обучения.
Она помогает делать ML системы более прозрачными, стабильными и надёжными за счёт постоянного мониторинга и аудита.

Она используется для того, чтобы:

— Отслеживать статистику и метрики моделей и данных в режиме реального времени.

— Выявлять дрейф данных - изменения в распределении данных со временем.

— Собирать примеры исключений и выбросов.

— Проводить аудит моделей и данных в поисках проблем.

— Генерировать автоматические отчёты и визуализации.

— Интегрировать с MLflow, TensorBoard и другими инструментами.

🔗 Python tricks
Точка входа в программу

Конструкция if __name__ == '__main__' используется для того, чтобы определить, запущен ли файл модуля напрямую или импортирован из другого модуля.

Эта конструкция позволяет запустить какой-то код только при прямом вызове модуля, так как name будет равно 'main' только если модуль запущен напрямую.

Это позволяет запускать программу полностью только когда она основная, а не импортируется в качестве модуля.

🔗 Python tricks
Переименование файлов в Python

rename()
— это функция из модуля os, которая позволяет переименовывать файлы и директории.

Используется для переименования файлов и директорий на файловой системе. Принимает два аргумента - старое имя и новое имя и атомарно переименовывает файл за одну операцию.

Также позволяет перемещать файлы между разными директориями.

🔗 Python tricks
Тернарный оператор

Тернарный оператор — это оператор, позволяющий записать условную конструкцию if-else в одну строку.

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

В данном примере тернарный оператор используется:
— Для вывода одной из двух фраз в зависимости от условия a > b.
— Для присваивания переменной result одного из двух значений в зависимости от четности a.

🔗 Python tricks
Оператор pass

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

— Заглушка для незавершенных блоков кода. Если написано только определение функции или класса, но нет тела - можно вставить pass, чтобы код был допустимым синтаксически.
— Пустые блоки в циклах. Вместо тела цикла можно написать pass, если на данном этапе нет необходимости выполнять какие-либо действия.
— Пропускать блоки кода в условных конструкциях. Если в ветви if-else ничего делать не нужно, можно использовать pass.
— Создание абстрактных базовых классов и заготовок методов, которые будут переопределены позже в подклассах.
— Обозначение функций или классов, которые планируется реализовать в будущем.

Как видно из примера, все числа от 0 до 9 выводятся кроме 5.

🔗 Python tricks
raise

Конструкция raise используется для генерации исключений.
Когда в коде происходит что-то непредвиденное или некорректное — можно сгенерировать исключение командой raise.

Например:
raise ValueError('Invalid value')

Здесь мы генерируем исключение ValueError с сообщением об ошибке.

После генерации исключения выполнение текущего кода прерывается и происходит переход в блок try/except для обработки этой ошибки.
Если исключение не будет обработано — программа завершится с ошибкой.

В этом примере функция calculate_discount проверяет входные данные. Если скидка меньше 0 или больше 100 — с помощью raise генерируется исключение ValueError с сообщением.

🔗 Python tricks
string.isnumeric

Метод isnumeric() проверяет, все ли символы в строке являются числовыми. Возвращает True, если все символы являются числовыми. В противном случае – False. В данном примере для symbol number возвращается True, так как “012345” являются числами. Для text возвращается False.

🔗 Python tricks
Set.add

Метод add() добавляет заданный элемент в множество. Если элемент уже присутствует, он не добавляет никакого элемента. Ты также можешь добавить кортежи в множество. Как и в случае с обычными элементами, один и тот же кортеж можно добавить только один раз.

🔗 Python tricks
Проверьте, удовлетворяет ли каждый элемент списка какому-либо условию

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

🔗 Python tricks
Группируйте различные элементы в списке на основе некоторого условия и превращайте его в словарь.

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

🔗 Python tricks
Сортировать список, используя другой список в качестве индексов

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

🔗 Python tricks
list.sort

Метод sort() сортирует элементы списка по возрастанию или убыванию. В качестве альтернативы ты можешь использовать встроенную функцию sorted() для той же цели.

🔗 Python tricks
Инвертировать словарь

Этот код инвертирует словарь original_dict, сопоставляя значения ключам и наоборот, создавая новый словарь inverted_dict.

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

Используем алгоритм Фишера-Йейтса. Он создает беспристрастные случайные перестановки списков, что часто имеет решающее значение для выборки. Популяризированный Кнутом, он беспристрастен, имеет оптимальную линейную эффективность по времени; использует постоянное пространство; и является инкрементным.

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

Defaultdict — это подкласс класса словаря, который возвращает объект, подобный словарю. Чем это отличается от обычного словаря? Хотя словарь и словарь по умолчанию почти идентичны, последний позволяет нам избежать KeyErrors. Другими словами, он предоставляет значение по умолчанию для несуществующего ключа. Эта характеристика defaultdictionary упрощает следующие операции.

🔗 Python tricks
tell()

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

При открытии файла указатель текущей позиции находится в начале. По мере чтения/записи он смещается.
Чтобы узнать текущее значение этого смещения, применяется метод tell().

Это позволяет:
— Узнать размер файла, сравнив позицию после чтения с начальной.
— Вернуться к определенной позиции с помощью seek().
— Отслеживать прогресс обработки больших файлов.
— Получить позицию в строковых буферах и потоках байтов.

Метод tell() возвращает текущую позицию в файле в байтах от начала.

🔗 Python tricks
Распечатайте все комбинации списка

Пакет Itertools, как следует из названия, содержит множество функций, включающих итерации. Комбинации также требуют итераций и поэтому включены в этот пакет в двух разных формах (т.е. combinations, combinations_with_replacement) в зависимости от того, что именно вы ищете. Itertools также является пакетом по умолчанию в Python.

🔗 Python tricks
Самый частый элемент в списке

Функция Counter из пакета Collections удобна для отслеживания количества различных элементов в списке. Пакет Collections является пакетом по умолчанию и поэтому не требует дополнительной установки, если у вас уже установлен Python.

🔗 Python tricks