Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction, который представляет и хранит число в виде рациональной дроби. #числа #fraction
Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction, который представляет и хранит число в виде рациональной дроби. #числа #fraction
contextlibесть еще один прикольный контекстный менеджер —
redirect_stdout, позволяющий перенаправить стандартный вывод программы. Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке. Таким образом, данные из
print()в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент
redirect_stdout. Убедится в этом можем, открыв файл заново и прочитав оттуда данные. #contextlib
Streamlitпозволяет превращать скрипты
Pythonв интерактивные веб-приложения за считанные минуты, а не за недели. Создавайте информационные панели, генерируйте отчеты или создавайте приложения для чата. Создав приложение, вы можете использовать облачную платформу Community Cloud для развертывания, управления и распространения приложения. Почему стоит выбрать Streamlit? — Простота и питоничность: Пишите красивый, легко читаемый код. — Быстрое интерактивное создание прототипов: Позвольте другим людям взаимодействовать с вашими данными и быстро предоставлять отзывы. — Редактирование в реальном времени: Видите, как ваше приложение мгновенно обновляется по мере редактирования кода. #python #streamlit
pyenvвыглядит так: — Позволяет изменять глобальную версию Python для каждого пользователя; — Обеспечивает поддержку версий Python для каждого проекта; — Позволяет переопределить версию Python с помощью переменной окружения; — Выполняет поиск команд из нескольких версий Python одновременно. Кстати, этот проект основан на rbenv и ruby-build и модифицирован для Python. #pyenv
moviepyпозволяет обрезать и склеивать видео, добавлять видеоэффекты, а также редактировать звук. В целом, с пакетом разбораться не сложно, базовое использование показано на картинке. В примере мы открываем два видео, склеиваем их в одно, обрезаем полученный клип, уменьшаем громкость звука и в конце сохраняем результат. Здесь еще важно отметить, что запуск и выполнение скриптов с обработкой видео может занять относительно большое время. Такой пакет полезен в случаях, когда требуется обработать очень много видео по одному и тому же принципу. #moviepy
subprocess, который позволяет вызывать любую программу, как если бы это была обычная функция. Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.
shполагается на системные вызовы Unix и работает только в Unix-подобных операционных системах, т.е. данный модуль не подойдет для работы с Windows. Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции. Также в модуле реализована функция
which, которая находит полный путь до программы либо возвращает
None, если программа не найдена. #sh
Python, вы можете использовать функцию
reload()из модуля
importlibЗамените
module_nameна фактическое имя модуля, который вы хотите перезагрузить. Это может быть полезно при разработке и тестировании модулей, но не рекомендуется использовать в проде без серьезных причин. #python #importlib
argvво встроенном модуле
sys. Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы. #sys
Kivy- это мощный кроссплатформенный фреймворк для разработки графических интерфейсов пользователя (GUI). Основное его преимущество заключается в универсальности: созданные при помощи
Kivyприложения могут запускаться на различных операционных системах, включая Windows, macOS, Linux, а также мобильные платформы Android и iOS. #python #kivy
getу словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию. Таким образом, если значение по ключу не найдено, то вернется дефолтное значение. В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет. #python #dict
captchaи
Pillow, который используется для создание изображений в
captcha. Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения
ImageCaptcha, на который будет нанесен текст. После чего вызываем метод
writeс заданным текстом и именем файла, в который будет записано изображение. #captcha
-Xдля указания различных вариантов реализации. Например,
-X devзапускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности. Также этот режим выводит дополнительные предупреждения в следующих случаях: — Незакрытые файлы; — Unawaited корутины; — Неизвестная кодировка для
str.encode; — Проблемы с выделением памяти. В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги. #python
Ruff— Чрезвычайно быстрый линтер и форматер кода на
Python, написанный на
Rust. Основным преимуществом
Ruffявляется его скорость.
Ruffв 10-100 раз быстрее аналогов. В сравнении с
flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (
flake8-bugbearи т.д.). Также
Ruffсовместим с
Black«из коробки».
Ruffможет форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична
isort. #python #ruff
memoryview()в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.
memoryview()также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python. Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени и ресурсов. #python
setuptoolsявляется инструментом для упрощения процесса создания, установки и распространения пакетов Python. Она используется в основном для упрощения установки и управления зависимостями Python-пакетов.
setuptoolsпредоставляет функциональность для создания файлов
setup.py, которые содержат информацию о вашем пакете, его зависимостях и других метаданных. Этот файл используется инструментами для установки пакетов, такими как
pip. #python #setuptools
itertools, который позволяет генерировать все возможные комбинации символов из списка
charactersдлиной
password_length. Затем перебираются все комбинации и выводятся на экран. Обратите внимание, что перебор всех возможных 8-значных паролей может занять большое количество времени, особенно если количество символов в
charactersбольшое. Будьте осторожны и убедитесь, что ваше намерение соответствует законам и этическим правилам. #python #itertools
warningsпредоставляет возможность управления предупреждениями, которые могут быть выведены во время выполнения программы. Модуль
warningsполезен, когда необходимо предупредить пользователя о каком-либо условии в программе и это условие не требует создания исключения и завершения программы. #python
Pythonследует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь. Это крайне важно знать, потому что эти символы влияют на такие функции, как
int,
unicode.isdecimalи даже
re.match. Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен. #python #unicode
math.perm()используется для определения количества возможных способов выбора и расположения m элементов из набора n элементов. Этот метод включен в модуль
math. Он требует указания двух параметров:
n— общее число элементов в наборе, и
m— число элементов в каждой возможной выборке. Результатом выполнения функции является целочисленное значение, представляющее число таких перестановок. Если
nменьше
m, функция возвратит 0. Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки. #python
Image.open('resources/img/cat.jpg')считывает картинку из папки.
img.convert('L')трансформирует картинку в черно-белую.
ImageOps.invert(image)обращает цвета.
img.transpose(Image.FLIP_LEFT_RIGHT)вертикально отзеркаливает картинку.
img.save('grayscale_cat.jpg')сохранит картинку на диске. Больше официальных примеров и документацию можно посмотреть тут. Пример можно посмотреть тут. #pillow
dict.get()— это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (
dict[key]), метод
get()предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре. Синтаксис метода
get()выглядит так:
value = dict.get(key, default)
key: Ключ, по которому производится поиск в словаре.
default(необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если
defaultне указан, и ключ не найден, метод вернет
None. #python
lower()для приведения в нижний регистр и
strip()для удаления пробелов слева и справа. Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет
reдля работы с ними. #python #re
Pythonесть удобный модуль
pretty_errors, который делает стандартный вывод исключений и их
tracebackболее удобным для чтения и красивым в целом. Установить его можно через пакетный менеджер
pip. А для того, чтобы он заработал, достаточно импортировать его в ваш код. Как результат, вывод ошибок в вашей программе будет выглядеть более читаемым. Более того, разные части вывода будут помечаться разным цветом вместо монотонного серого цвета. Также модуль можно модифицировать, указав параметры в конфиге. Подробнее можете почитать в документации модуля. #python #pretty_errors
pathlibдля простой работы с файловыми путями. Для представления пути к файлу есть класс
Path, с объектами которого уже можно производить операции. Например, методы
exists()и
is_dir()проверяют, существует ли файл и является ли он директорией. Но самой классной фичей является замена
os.path.join()на более удобный и элегантный вариант с использованием слэшей, как показано на картинке. Итого, пакет
pathlibможет стать частичной заменой
osв некоторых случаях при работе с файловыми путями. #pathlib
setdefault()в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение. Метод
setdefault()имеет два параметра: — Ключ, по которому необходимо получить значение. — Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует. Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
PyUSB— это библиотека, которая обеспечивает легкий доступ к
USB. Имеет поддержку изохронной передачи, если её поддерживает бэкенд. Основные методы для работы с
USB, такие как
find(),
show_devices()и т. д, хранятся в
usb.core. Пакет
usb.utilсодержит вспомогательные функции. Функция
find()используется для поиска устройств, подключенных к системе. Также есть реализация внешнего и внутреннего интерфейса, для изоляции
APIот деталей реализации системы. Связующим звеном между двумя слоями является интерфейс
IBackend.
PyUSBпоставляется со встроенными бэкэндами для
libusb 1.0,
libusb 0.1и
OpenUSB. #python #PyUSB
ipaddress. Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация). Кстати, у модуля
ipaddressесть и много других интересных возможностей, прочитать о которых можно здесь. #ipaddress
docker-py– это официальная библиотека
Pythonдля
Docker, предоставляющая
APIдля взаимодействия с
Docker Daemon. С её помощью можно автоматизировать процессы создания, запуска, остановки и удаления контейнеров, работы с образами, сетями и томами Docker.
import docker # Создание клиента client = docker.from_env() # Запуск контейнера container = client.containers.run("ubuntu:latest", "echo Hello, docker-py!", detach=True) # Получение логов контейнера print(container.logs().decode()) # Остановка и удаление контейнера container.stop() container.remove()В данном примере мы создаем клиента
Docker, используя переменные окружения текущей сессии. Затем мы запускаем контейнер из образа
ubuntu:latest,
выполняем в нем команду
echo,
выводим логи работы контейнера и в конце останавливаем и удаляем контейнер. Управление образами с помощью docker-py:
# Получение списка всех образов images = client.images.list() # Вывод информации о каждом образе for image in images: print(f'ID: {image.id}, Теги: {image.tags}')Для дальнейшего изучения и ознакомления с более продвинутыми возможностями рекомендуется обратиться к официальной документации. #python #docker #dockerpy
tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями. Функция
TemporaryFileсоздает временный файл в системной директории и возвращает файлоподобный объект. Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера. Также другие процессы и приложения не смогут получить доступ к этому временному файлу. #tempfile
pyarmor, предназначенная именно для этого. Пример использования этого пакета в терминале представлен выше на картинке. #pyarmor
PyAudioпредоставляет возможности для записи аудиопотока с различных устройств.
PyAudioработает посредством кросс-платформенной библиотеки
PortAudio(поэтому необходимо заранее установить пакет разработки
portaudio19-dev). В приведенном примере мы создаем объект класса
PyAudioи открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента
input_device_index). Данный объект потока позволяет считывать с устройства с помощью метода
stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации. В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл
wav. #pyaudio #audio