python_academy | Unsorted

Telegram-канал python_academy - Python Academy

51359

Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu

Subscribe to a channel

Python Academy

Работаем с картинками в 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

Читать полностью…

Python Academy

Проверка отношения классов

Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).

instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.

Данные функции зачастую применяются в ООП.

#isinstance #issubclass

Читать полностью…

Python Academy

Локализация в Python с помощью модуля gettext

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

Что такое gettext?
gettext - это модуль Python, предназначенный для обеспечения поддержки интернационализации и локализации. Он позволяет создавать переводы строк на различные языки, обеспечивая легкость адаптации приложения под разные культурные контексты.

Пример использования gettext:

import gettext
from pathlib import Path
translations = gettext.translation('your_app', localedir=Path('locales'), languages=['ru'])
translations.install()
print(_("Hello, gettext!"))

В данном примере мы используем модуль gettext для загрузки файлов перевода из директории 'locales' для русского языка. Функция _() используется для обозначения строк, подлежащих локализации.

Создание файлов перевода:
Для создания файлов перевода можно воспользоваться утилитой pybabel:
pybabel extract -F babel.cfg -o messages.pot your_app
pybabel init -i messages.pot -d locales -l ru


gettext также предоставляет множество возможностей для более сложных сценариев локализации, таких как форматирование чисел, дат и поддержка множественных форм.
#python #gettext #i18n

Читать полностью…

Python Academy

Метод join у строк

У строк есть полезный метод str.join(), который принимает на вход итерируемый объект, элементами которого также должны быть строки.

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

Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке.

#строки

Читать полностью…

Python Academy

Используйте dict.get() вместо dict[]

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

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

Поэтому мы считаем, что лучше использовать метод get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию.

Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.

В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.

#python #dict

Читать полностью…

Python Academy

Чемпионат для подростков по 14 направлениям от «Алабуга Политех»☺️

Программирование и Битва роботов, Экономика и Юриспруденция, 3D моделирование и Английский язык и многое другое, чтобы каждый нашел свою дисциплину.

Для участия тебе нужно☺️
☺️Оставь заявку на сайте😀
☺️Пройди заочный этап на HR-платформе: Business Cats до 1,0 по «Общению» и «Аналитике» для оплаты дороги туда и обратно😀
☺️Приезжай на чемпионат😀

Мы предлагаем тебе☺️
☺️Общий призовой фонд турнира составляет 450 000 рублей😀
☺️Проживание и дорога бесплатно😀
☺️Возможность поступить в «Алабуга Политех»😀

Участвуй в турнире от образовательного центра мирового уровня и получай призы и преимущество в поступлении☺️

Читать полностью…

Python Academy

Проверка отношения классов

Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).

instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.

Данные функции зачастую применяются в ООП.

#isinstance #issubclass

Читать полностью…

Python Academy

Интересная пасхалка

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

Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля.

Оказывается, интерпретатор CPython сначала запускает файл future.c, когда встречается импорт этого модуля. А само это исключение реализовано на этой строчке.

#пасхалки

Читать полностью…

Python Academy

Преобразование аудиофайлов с помощью Python

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

Для начала работы с файлом, используем метод from_ с указанием необходимого формата из класса AudioSegment, или же обратимся к более универсальному методу from_file, предоставляя путь к файлу и его формат.

Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод export объекта класса AudioSegment, созданного на предыдущем шаге.

#python #pydub

Читать полностью…

Python Academy

Бесконечность

Вообще float является крайне интересным типом данных и не перестает удивлять своими особенностями. Про значение Not a Number мы уже писали, а вот сегодня поговорим про infinity.

Строковые литералы 'inf' и 'infinity' можно конвертировать в float, и в результате получается значение бесконечности. Для отрицательной "бесконечности" нужно поставить знак минуса перед словом.

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

#float

Читать полностью…

Python Academy

Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

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

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio

Читать полностью…

Python Academy

Валидаторы данных

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

Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#python #validators

Читать полностью…

Python Academy

FastAPI Template — лучший темплейт со всем что надо для старта на FastAPI!

Одной из самых замечательных особенностей является то, что этот проект очень легко настраивается. Вы можете выбирать между различными базами данных и даже ORM, а можете даже сгенерировать проект без базы данных! В настоящее время поддерживаются SQLAlchemy 2.0, TortoiseORM, Piccolo и Ormar.

Фичи темплейта:
- Pydantic V2 (где это возможно, некоторые либы не поддерживают)
- Вы можете выбрать между GraphQL и REST API
- uvicorn и gunicorn
- Поддержка различных баз данных и ORM
- Опциональные миграции для каждого ORM (кроме сырых драйверов)
- Различные CI\CD
- Дополнительные демонстрационные роуты и модели (это поможет вам увидеть, как устроен проект)
- Сгенерированные тесты с почти 90% покрытием
- Дополнительная поддержка Redis, RabbitMQ, Kafka и taskiq
- Опциональная интеграция с Prometheus, Sentry и Opentelemetry
- Опциональный логгер Loguru

Ссылку оставляю тут.

#python #fastapi #template

Читать полностью…

Python Academy

Как перезагрузить импортированный модуль?

Чтобы перезагрузить импортированный модуль в Python, вы можете использовать функцию reload() из модуля importlib

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

#python #importlib

Читать полностью…

Python Academy

Красивые таблицы в терминале

PrettyTable – это простая библиотека, предназначенная для быстрого и легкого представления табличных данных в виде ASCII. Модуль можно установить привычным способом через pip.

Для создания таблиц и работы с ними используется класс PrettyTable из этого модуля. Задать название для столбцов можно с помощью атрибута fields_name. Строки в таблицу добавляются путем вызова метода add_row.

Более того, модуль prettytable позволяет регулировать различные параметры, сортировать данные, работать с html, а также взаимодействовать с csv и sql таблицами. Так что возможностей у этого модуля предостаточно.

#таблицы #prettytable

Читать полностью…

Python Academy

Простой, но мощный веб-фреймворк

Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.

Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат.

#модули

Читать полностью…

Python Academy

Асинхронные запросы с aiohttp

Модуль aiohttp представляет из себя асинхронный HTTP клиент/сервер для asyncio и Python. Он позволяет выполнять асинхронные HTTP запросы, что делает его идеальным инструментом для современных приложений, где требуется высокая производительность и параллелизм.

Установка aiohttp производится через pip. Чтобы начать делать асинхронные запросы, вам потребуется взаимодействовать с ним с помощью синтаксиса async/await. Запросы, такие как GET, POST, PUT и DELETE, оформляются чисто и ясно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.

Модуль aiohttp подходит не только для работы с асинхронными веб-сервисами, но и для асинхронного скрапинга веб-страниц.

#модули

Читать полностью…

Python Academy

Введение в машинное обучение с библиотекой Scikit-Learn в Python

Сегодня мы поговорим о машинном обучении и о библиотеке Scikit-Learn , которая является мощным инструментом для создания и обучения моделей машинного обучения в Python. Scikit-Learn предоставляет широкий спектр алгоритмов и инструментов для задач классификации, регрессии, кластеризации, и многих других. Это отличное введение в мир машинного обучения.

Что такое Scikit-Learn?
Scikit-Learn (sklearn) - это библиотека машинного обучения для Python, которая предоставляет простой и единый интерфейс для множества алгоритмов машинного обучения. Она поддерживает задачи как классификации, так и регрессии, а также кластеризации, извлечение признаков, и многое другое. Scikit-Learn также включает в себя множество инструментов для предобработки данных и оценки производительности моделей.

Для чего можно использовать Scikit-Learn?
1. Классификация: Scikit-Learn предоставляет множество алгоритмов классификации, таких как метод опорных векторов (SVM), случайные леса, наивный байесовский классификатор, логистическая регрессия и другие. Эти алгоритмы позволяют решать задачи бинарной и многоклассовой классификации.

2. Регрессия: Scikit-Learn поддерживает регрессию, что позволяет создавать модели для прогнозирования числовых значений. Линейная регрессия, регрессия на основе деревьев, и множество других методов доступны для решения задач регрессии.

3. Кластеризация: Для задач кластеризации, Scikit-Learn предоставляет алгоритмы, такие как K-средних, иерархическая кластеризация, агломеративная кластеризация и многое другое. Эти методы позволяют группировать данные на основе их сходства.

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

Читать полностью…

Python Academy

Логирование в Python используя Loguru

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

Что такое loguru?
loguru - это библиотека для логирования в Python, созданная с упором на простоту использования и выразительность. Она предоставляет удобный синтаксис для настройки логирования и поддерживает различные форматы вывода, а также обеспечивает автоматическую ротацию лог-файлов.

Преимущества loguru:
1. Простота использования: loguru предлагает чистый и интуитивно понятный синтаксис для логирования, что упрощает его внедрение в ваши проекты.

2. Гибкость: Вы можете легко настраивать формат вывода, выбирать уровни логирования и добавлять собственные обработчики.

3. Автоматическая ротация: Библиотека автоматически управляет ротацией лог-файлов, предотвращая переполнение дискового пространства.

4. Поддержка различных форматов вывода: loguru поддерживает вывод в различных форматах, включая JSON, CSV, и прочие.

#python #loguru #логирование

Читать полностью…

Python Academy

Редирект вывода программы

В contextlib есть еще один прикольный контекстный менеджер — redirect_stdout, позволяющий перенаправить стандартный вывод программы.

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

Таким образом, данные из print() в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout.

Убедится в этом можем, открыв файл заново и прочитав оттуда данные.

#contextlib

Читать полностью…

Python Academy

Метод ljust()

Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar.

Читать полностью…

Python Academy

Нижнее подчеркивание

В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно и не должно использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.

Первое, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны — например, в циклах for.

Второе, интерактивный режим использует _ для хранения результата последнего выполненного выражения.

Третье, документация модуля gettext рекомендует псевдоним _() для функции gettext(), чтобы минимизировать загромождение вашего кода.

#тонкости

Читать полностью…

Python Academy

Участвуй в хакатоне от МТС!

Хакатон МТС True Tech Hack 2025 — возможность разработать решение на базе одной из ИТ-платформ МТС.
Поборись за призовой фонд соревнования в 1 500 000 рублей!

Участие могут принять системные аналитики, Data Scientists, Data Engineers, frontend и backend-разработчики, Android-разработчики, бизнес-аналитики, аналитики данных, MLOps-инженеры, DevOps-инженеры, Product-менеджеры, ИТ-архитекторы, UI/UX-дизайнеры.


Создай концепцию функционального решения на базе одной из пяти ИТ-платформ МТС: DataOps Platform, Integration Platform, True Tabs, MWS GPT или Product Factory.

Хакатон будет проходить с 17 по 25 апреля.
Регистрация до 16 апреля по ссылке: https://truetechhack.ru/

Не упускай шанс показать себя!

Читать полностью…

Python Academy

Скачиваем видео с YouTube

Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.

Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.

Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует YouTube.

На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.

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

#python #youtube

Читать полностью…

Python Academy

Извлечение таблиц из PDF

Camelot — это удобная библиотека, которая поможет вам извлечь любую таблицу из PDF файла.

Также есть возможность использоваться Excalibur, это веб интерфейс Camelot.

Почему вам стоит использовать Camelot:

— Каждая таблица является DataFrame;
— Возможность экспорта в множество разных форматов;
— Можно отбрасывать таблицы на основе таких метрик как точность и пробелы, без необходимости вручную просматривать таблицу.

#camelot

Читать полностью…

Python Academy

Использование OpenCV для работы с веб-камерой

Библиотека OpenCV это инструмент для работы с компьютерным зрением, обработки изображений и видео. Её можно легко установить через pip, используя команду: pip install opencv-python.

В качестве примера давайте рассмотрим, как можно захватить изображение с веб-камеры и отобразить его в окне. Для начала, инициализируем веб-камеру с помощью команды cap = cv2.VideoCapture(0), где число обозначает индекс камеры.

Далее, с помощью строки ret, frame = cap.read(), мы извлекаем текущее изображение с камеры в переменную frame, а также получаем статус захвата в переменную ret. Если ret == True, это означает, что захват прошёл успешно.

Следующим шагом, команда cv2.imshow('webcam', frame) открывает графическое окно с полученным изображением.

Для выхода из цикла просмотра и завершения работы скрипта, используется проверка нажатия клавиши 'q': if cv2.waitKey(1) & 0xFF == ord('q'):.

Наконец, для освобождения веб-камеры и закрытия всех графических окон, используются команды cap.release() и cv2.destroyAllWindows() соответственно.

#python #opencv

Читать полностью…

Python Academy

Работа с форматированием текста

textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.

Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.

Немного о возможностях:

textwrap.fill() — принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.

textwrap.dedent() — используется для удаления общего префикса пробела из всех строк в тексте.

textwrap.indent() — используется для добавления текст префикса ко всем строкам в параграфе

#python #textwrap

Читать полностью…

Python Academy

Возвращаем значение по указанному ключу с помощью метода setdefault()

Метод setdefault() в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.

Метод setdefault() имеет два параметра:

— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.


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

Читать полностью…

Python Academy

Находим файлы по шаблону

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

В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.

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

#glob

Читать полностью…

Python Academy

Добавляем классу большую функциональность

Декоратор @classmethod — это метод, который получает класс в качестве параметра, который принято обозначать как cls. Он указывает на класс ToyClass, а не на объект этого класса.

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

Проще говоря, @classmethod — это обычный метод класса, имеющий доступ ко всем атрибутам класса, через который он был вызван.

#oop #classmethod

Читать полностью…
Subscribe to a channel