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
Библиотека Typer

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

Основные возможности Typer:
— Декоратор @typer.command() для определения команд и подкоманд.
— Автоматический парсинг аргументов и опций.
— Валидация и tipped annotations для аргументов и опций.
— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.

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

🔗 Python tricks
Click

Clickпопулярная библиотека для создания интерфейса командной строки (CLI) в приложениях Python.
Основные преимущества Click — простота использования, элегантный и понятный код, мощные возможности по созданию комплексных CLI. Работает на Python 3.6 и выше.

Возможности:
— Определение команд и групп команд с помощью декоратора @click.command().
— Декларативное описание аргументов и опций.
— Автоматический парсинг аргументов командной строки.
— Генерация help сообщения.
— Поддержка bash/zsh автодополнения.
— Вложенные команды и группы подкоманд.
— Цветной вывод в терминал.

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

🔗 Python tricks
Функция sorted

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

По умолчанию сортировка выполняется в возрастающем порядке. Для сортировки в убывающем порядке нужно указать аргумент reverse=True.
Для сортировки по определенному ключу можно использовать ключевой аргумент key. Он принимает функцию, которая извлекает ключ для сортировки из каждого элемента.

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

🔗 Python tricks
bashplotlib

bashplotlib - это инструмент для построения графиков прямо в терминале с помощью Python. Он позволяет создавать простые графики прямо из командной строки.

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

🔗 Python tricks
Библиотека HTTPX

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

🔗 Python tricks
Функция zip()

Функция zip() принимает в качестве аргументов последовательности (списки, кортежи и т.д.) и возвращает итератор с кортежами из элементов этих последовательностей.

Итератор возвращает кортежи, содержащие i-й элемент из каждой из последовательностей. Количество элементов в итоговом итераторе равно длине самой короткой последовательности.

zip можно использовать для "сшивания" вместе данных из нескольких списков. Например, имена и фамилии из двух списков можно комбинировать в один список имя-фамилия.
Результатом zip является итератор, который можно превратить в список или кортеж. Также на результат можно применять различные операции, такие как цикл for.

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

🔗 Python tricks
Pyspark

Pyspark — это библиотека для работы с Apache Spark на языке Python. Она позволяет выполнять распределенные вычисления на кластерах и обрабатывать большие объемы данных.

Основные возможности Pyspark:
Pyspark автоматически распределяет данные и вычисления между узлами кластера для максимальной производительности.
— В Pyspark есть специальные типы данных (RDD, DataFrame, Dataset), которые позволяют удобно работать с табличными и структурированными данными.
— Поддержка чтения и записи в разные хранилища данных и форматы файлов.
— Встроенные алгоритмы машинного обучения для классификации, кластеризации, регрессии.
— Интуитивно понятный API, позволяющий применять Pyspark вместе с другими популярными библиотеками Python для анализа данных.

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

🔗 Python tricks
Plumbum

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

Основные возможности библиотеки:
— Удобный синтаксис для запуска команд и программ из Python кода. Позволяет вызывать команды командной строки так же просто, как обычные функции.
— Автоматическое формирование командной строки. Можно передавать аргументы и параметры в виде обычных переменных, Plumbum сам сформирует командную строку.
— Перенаправление ввода/вывода. Поддержка стандартных операторов Unix для работы с потоками данных.
— Проверка кодов возврата и обработка ошибок.
— Локальное или удаленное выполнение. Возможность запускать команды как локально, так и по SSH на удаленных хостах.

🔗 Python tricks
Логические all и any

Встроенные функции all() и any(), которые применяются к последовательностям (спискам, кортежам и т. д.) и возвращают bool значение.

all(iterable) — возвращает True, если все элементы iterable истинны (или iterable пуст).
any(iterable) — возвращает True, если хотя бы один элемент iterable истинен.

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

Важные моменты:
— Для пустых iterable all() вернёт True, а any()False.
— Элемент считается ложным, если его bool() равен False.
— Функции останавливаются при первом ложном (для all) или истинном (для any) элементе.

🔗 Python tricks
Атрибут __all__

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

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

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

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

🔗 Python tricks
Argcomplete

Argcompleteэто библиотека для автодополнения аргументов командной строки.
Она позволяет легко добавить автодополнение для argparse в интерактивных оболочках (например, bash, zsh).

Библиотека работает в разных оболочках (bash, zsh и др.) без изменения кода и обладает простой интеграцией — достаточно декорировать функцию argparse декоратором @argcomplete.register.

Основные возможности argcomplete:
— Автоматическое дополнение имен файлов и каталогов при вводе путей.
— Предложение вариантов для аргументов на основе возможных значений, описанных через argparse.
— Дополнение для подкоманд в приложениях с вложенной структурой команд.

🔗 Python tricks
Библиотека yt-dlp

yt-dlpэто библиотека и утилита командной строки для скачивания видео с YouTube и других сайтов.

Основные возможности и применение yt-dlp:
— Поддерживает скачивание видео, аудио, плейлистов, каналов и др с YouTube. Помимо этого работает с сотнями других сайтов — Vimeo, Facebook, ВКонтакте, TikTok и др. Позволяет скачивать контент практически отовсюду.
— Извлечение метаданных и обложек видео.
— Конвертация медиафайлов в другие форматы после скачивания.
— Поддержка прокси и лимитов скорости.
— Множество настроек для извлечения данных, именования файлов, пост-обработки и т.д.
— Удобная утилита командной строки и модуль Python для автоматизации.

🔗 Python tricks
Функции, поддерживающие только именованные аргументы (kwargs)

**kwargs (keyword arguments) — это способ передачи произвольного количества именованных аргументов в функцию.

В функциях после позиционных и обычных именованных аргументов указывают параметр **kwargs.

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

Если одновременно используются *args и **kwargs, то в вызове сначала указываются *args.

🔗 Python tricks
list.reverse

Метод reverse() меняет местами элементы списка. Он не возвращает никакого значения. Он обновляет существующий список. Если тебе нужно получить доступ к отдельным элементам списка в обратном порядке, лучше использовать функцию reversed().

🔗 Python tricks
Библиотека Requests

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

🔗 Python tricks
Библиотека Retrying

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

🔗 Python tricks
Set.update

В данном коде продемонстрировано применение метода update() для добавления в множество строки и словаря. Метод разбивает строку на отдельные символы и добавляет их в множество number1. Аналогично он добавляет ключи словаря в множество number2.

🔗 Python tricks
Библиотека Dramatiq

По назначению библиотека похожа на Celery, но считается более новой и работает иначе. Она нужна для распределения задач, которые выполняются фоново. Библиотека лишена ряда недостатков Celery и более удобна в использовании.

🔗 Python tricks
Библиотека Dramatiq

По назначению библиотека похожа на Celery, но считается более новой и работает иначе. Она нужна для распределения задач, которые выполняются фоново. Библиотека лишена ряда недостатков Celery и более удобна в использовании.

🔗 Python tricks
Библиотека Celery

Помогает правильно распределить множество задач в больших проектах, расставить приоритеты и выполнить их в оптимальной последовательности. Часто используется в backend-разработке, например с фреймворком Django.

🔗 Python tricks