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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Нарезка списка

Start, stop и step необязательны. У них есть дефолтные значения, которые активируются, если не заполнить параметры:
• 0 для start;
• конец списка для stop;
• 1 для step.

🔗 Python tricks
Использование памяти

С помощью sys.getsizeof() можно проверить использование памяти объектом.

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

🔗 Python tricks
Обязательные аргументы

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

🔗 Python tricks
📖Модуль difflib для сравнения последовательностей

Особенно полезен для работы с текстами. Содержит функции для создания отчётов в нескольких распространённых форматах, в том числе в HTML.

▪️Класс Differ(), например, выводит различия в отдельных строках, сопровождая их префиксами.
▪️Класс SequenceMatcher() позволяет вычислить сходство между строками. Функция get_opcodes() возвращает список инструкций для приведения первой последовательности к виду второй.

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

🔗 Python tricks
enumerate

Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает данный объект. При необходимости ты можешь указать, с какого числа начинать отсчет. По умолчанию значение 0.

🔗 Python tricks
Разбиение строки в список

Вы можете разбить строку на список строк. В этом случае разбиение происходит по символу пробела.

Чтобы разделить по пустому месту, не нужно передавать в split никаких аргументов – используйте mystring.split().

🔗 Python tricks
Строка – заголовок

Если хотите быстро получить красивый заголовок, сделайте так.

🔗 Python tricks
EEL

EEL (Easy Electron)
это библиотека, которая упрощает создание desktop-приложений с использованием технологий веб-разработки (HTML, CSS и Javascript).

Основные возможности EEL:

— Позволяет создавать графический интерфейс приложения при помощи веб-технологий.
— Обеспечивает взаимодействие между Python кодом и Javascript кодом. Python может вызывать JS функции, а JS может вызывать Python.
— Автоматически обрабатывает асинхронные вызовы между JS и Python.
— Встроенный локальный веб-сервер для отображения HTML/JS интерфейса.

В этом примере импортируется модуль eel и инициализируется папка с HTML и JS файлами — 'web'.
Декоратор @eel.expose делает функцию say_hello() доступной для вызова из Javascript.
Вызов eel.say_hello() вызывает эту функцию из Python кода.

🔗 Python tricks
manim

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

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

Результат выполнения кода из примера — видеофайл с анимацией данных преобразований.

🔗 Python tricks
len

Функция len() возвращает количество элементов (длину) в объекте. Если невозможно передать аргумент, либо передается недопустимый аргумент, вызывается исключение TypeError.

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

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

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

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

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

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

🔗 Python tricks
Работа с датами

Модуль Python-dateutil предоставляет мощное расширение для стандартного datetime. Устанавливается он следующим образом.

🔗 Python tricks
Синтаксис

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

🔗 Python tricks
Создание строки из списка строк

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

🔗 Python tricks
Реверс строк и списков

Вы можете использовать slice-нотацию, чтобы перевернуть строку или список. При отрицательном значении шага, элементы меняются местами.
🔗 Python tricks
Query JSON

JMESpath – это язык запросов для JSON, который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.

🔗 Python tricks
LangChain

LangChain
это библиотека, которая позволяет создавать цепочки обработки естественного языка (NLP).

Основные возможности:
— Создание конвейеров обработки текста.
— Подключение различных модулей NLP (токенизация, лемматизация и т. д.).
— Объединение моделей в единую цепочку.
— Удобная настройка и отладка.

Используется для:
— Построения приложений для анализа текста на Python.
— Быстрого прототипирования решений для обработки естественного языка.
— Объединения разных библиотек NLP в одном workflow.
— Упрощения процесса экспериментов с моделями обработки текста.

В этом примере создается цепочка из двух моделей OpenAI — Curie и Babbage, а текст передается поочередно в каждую модель.

🔗 Python tricks
Fugue

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

Основные возможности:
— Описание этапов workflow как отдельных функций.
— Автоматическое определение зависимостей между функциями.
— Планирование выполнения функций с учетом зависимостей.
— Кэширование промежуточных результатов для оптимизации.
— Распределенное выполнение на разных ядрах или машинах.

В этом примере с помощью декоратора @FugueWorkflow() отмечены функции, которые будут этапами workflow.
Fugue автоматически определит, что fit_model зависит от preprocess, а predict - от fit_model.

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

🔗 Python tricks
Завершение программы

sys.exit()
это функция, которая позволяет завершить выполнение программы и возвратить код возврата операционной системе.
Принимает один необязательный числовой аргумент — код возврата программы. По умолчанию это 0, что означает успешное завершение, а код возврата отличный от нуля сигнализирует об ошибке или нештатной ситуации.

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

🔗 Python tricks