Telegram Web Link
Работаем с файловыми путями

В стандартной библиотеке есть максимально удобный пакет pathlib для простой работы с файловыми путями.

Для представления пути к файлу есть класс Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией.

Но самой классной фичей является замена os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке.

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

#pathlib
Делаем ошибки более читаемыми

В Python есть удобный модуль pretty_errors, который делает стандартный вывод исключений и их traceback более удобным для чтения и красивым в целом.

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

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

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

#python #pretty_errors
Форматируем строку для URL-адреса

Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.

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

Выше в коде мы написали простую функцию, где использовали методы lower() для приведения в нижний регистр и strip() для удаления пробелов слева и справа.

Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет re для работы с ними.

#python #re
Тестирование на pytest

pytest — ближе по духу к языку Python нежели unittest, которая накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов.

Но при разработке на pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python.

Также он поддерживает запуск тестов на unittest и nose, то есть полная обратная совместимость с ними.

#python #pytest #assert
dict.get()

dict.get() — это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (dict[key]), метод get() предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре.

Синтаксис метода get() выглядит так:

value = dict.get(key, default)

key: Ключ, по которому производится поиск в словаре.
default (необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если default не указан, и ключ не найден, метод вернет None.

#python
Работаем с картинками в Python

Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в 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
Функция math.perm()

math.perm() используется для определения количества возможных способов выбора и расположения m элементов из набора n элементов. Этот метод включен в модуль math.

Он требует указания двух параметров: nобщее число элементов в наборе, и m — число элементов в каждой возможной выборке. Результатом выполнения функции является целочисленное значение, представляющее число таких перестановок. Если n меньше m, функция возвратит 0.

Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки.

#python
Хотите попробовать себя в роли аналитика и попрактиковаться на реальных задачах?

Приходите на бесплатный курс-симулятор Нетологии и Yandex Cloud «Основы анализа данных в SQL, Python, Power BI, DataLens».

В этой профессии много разных направлений — аналитик данных, BI-аналитик, продуктовый аналитик, Data Scientist. Но везде пригодится навык работы с инструментами-помощниками, которые вы и освоите на курсе.

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

Воспользуйтесь шансом попробовать новые инструменты и запишитесь на бесплатный курс Нетологии.

Регистрация: https://netolo.gy/c3Xk
Реклама. ООО "Нетология" LatgBcJFo
Важное про цифры и Юникод

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь.

Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match.

Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.

#python #unicode
Включаем предупреждения об ошибках или исключениях с помощью модуля warnings

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

Модуль warnings полезен, когда необходимо предупредить пользователя о каком-либо условии в программе и это условие не требует создания исключения и завершения программы.

#python
Больше выгодных предложений для самозанятых

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

▪️Сервис полностью бесплатный
▪️В сервисе доступны бесплатные полезные услуги, например, онлайн-запись клиентов
▪️Для самозанятых в Сбере ставка на кредиты ниже на 1%

Кстати, подключить сервис и пользоваться всеми привилегиями могут даже те, кто уже оформил ведет самозанятость в ФНС или других банках. Данные синхронизируются с ФНС, и вы сможете продолжить вести дела в СберБанк Онлайн.

Если вы подключитесь к сервису для самозанятых до 30 апреля, то сможете поучаствовать в розыгрыше 16 миллионов бонусов. Более подробную информацию можно найти здесь.
Cравнение 2 аудиосообщений с помощью библиотеки для анализа звука

В библиотеку для анализа звука, например, librosa или PyAudio мы загружаем два файла и вычисляем их характеристики MFCC (Mel Frequency Cepstral Coefficients), которые представляют собой набор коэффициентов, описывающих звуковое пространство. Затем мы вычисляем расстояние между характеристиками с помощью функции dtln из librosa.core. Результат будет выведен в консоль.

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

#python
Перебираем все возможные 8 значные пароли состоящие из букв и цифр с помощью Python

В этом примере используется модуль itertools, который позволяет генерировать все возможные комбинации символов из списка characters длиной password_length. Затем перебираются все комбинации и выводятся на экран.

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

#python #itertools
Библиотека setuptools

Библиотека setuptools является инструментом для упрощения процесса создания, установки и распространения пакетов Python. Она используется в основном для упрощения установки и управления зависимостями Python-пакетов.

setuptools
предоставляет функциональность для создания файлов setup.py, которые содержат информацию о вашем пакете, его зависимостях и других метаданных. Этот файл используется инструментами для установки пакетов, такими как pip.

#python #setuptools
Узнаём атрибуты и методы класса

С помощью dir() можно получить список всех атрибутов и методов ‌‎любого‌‎ ‌‎объекта. Может пригодиться при изучении пакетов сторонних разработчиков.
27 и 28 апреля приглашаем специалистов робототехники и reinforcement learning на ROS Meetup в Москве 📅

Это возможность для робототехников всех уровней: от новичков до экспертов, — посвятить выходные практическому обучению и нетворкингу. Вы получите советы и рекомендации экспертов, сможете поделиться идеями с другими разработчиками. Доклады охватывают весь спектр тем: от ROS до reinforcement learning и антропоморфных роботов.

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

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

На какие темы будем общаться:

✔️ Антропоморфные роботы
✔️ Reinforcement learning
✔️ LLM — large language mode, Deep learning
✔️ Беспилотные автомобили и мобильные роботы
✔️ Манипуляторы и алгоритмы в манипуляции, в том числе MOVEit
✔️ ROS-пакеты и другие темы в робототехнике

Локация: г. Москва, Кутузовский проспект 32к1, офис Сбера.

Регистрируйтесь по ссылке 👈
memoryview()

memoryview() в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.

memoryview() также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.

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

#python
Forwarded from Бэкдор
Вау, две российских нейронки попали в международный рейтинг от TechBullion! На пятом месте — Kandinsky от Сбера за умение создавать сложные изображения с глубоким подтекстом. На десятом — YandexART за генерацию в разных стилях.

Midjourney нервно затрясся.

@whackdoor
Ruff

Ruff — Чрезвычайно быстрый линтер и форматер кода на Python, написанный на Rust.

Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов. В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».

Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.

#python #ruff
Режим разработки

Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом -X для указания различных вариантов реализации.

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

Также этот режим выводит дополнительные предупреждения в следующих случаях:

— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для str.encode;
— Проблемы с выделением памяти.

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

#python
2024/09/26 04:56:50
Back to Top
HTML Embed Code: