Python Academy
48.4K subscribers
1.15K photos
3 videos
392 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

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

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Форматируем строку для URL-адреса

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

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

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

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

#python #re
2
Работа с данными в Python используя Pydantic

Pydantic - это библиотека для Python, предназначенная для парсинга и валидации данных. Она использует статическую типизацию для атрибутов классов, что облегчает проверку данных при создании объектов.

Этот инструмент особенно полезен при работе с JSON: он автоматизирует проверку структуры, необходимых полей и значений.

Pydantic поддерживает не только стандартные типы данных, но и специализированные, такие как email, URL-адреса и номера платежных карт.

Для более подробного примера и документации можно обратиться сюда.

#python #pydantic
2👍1
Дробные числа

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

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

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

#числа #fraction
Отправка электронных писем через SMTP в Python

SMTP (Simple Mail Transfer Protocol) - это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке Python доступен пакет smtplib, который реализует функциональность SMTP.

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

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

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

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

Пример использования smtplib для отправки электронного письма:
import smtplib

smtp_server = "smtp.example.com"
smtp_port = 465 # SSL-порт
smtp_username = "your_username"
smtp_password = "your_password"

server = smtplib.SMTP_SSL(smtp_server, smtp_port)

server.login(smtp_username, smtp_password)

from_email = "your_email@example.com"
to_email = "recipient@example.com"
subject = "Тема письма"
message = "Текст письма"

server.sendmail(from_email, to_email, f"Subject: {subject}\n\n{message}")

server.quit()


#python #smtp #smtplib
2
Управление версионностью Python с помощью pyenv

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

Возможности pyenv включают:

- Изменение глобальной версии Python для пользователя;
- Управление версиями Python для индивидуальных проектов;
- Переопределение версии Python через переменную среды;
- Поиск и выполнение команд сразу из нескольких версий Python.

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

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

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

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

#модули
4👍4
Делаем простой интерфейс используя tkinter

tkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.

Хотя tkinter может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.

#python #tkinter
8👍1
Частая проблема: вроде всё красиво, у вас GPT, LangChain, промпт отлажен, а ответы всё равно какие-то… странные. То он придумывает ссылки, то не знает очевидного.

Это не баг, просто ему неоткуда взять актуальные данные. И вот тут как раз нужен RAG, когда для LLM подкладывают реальные факты из базы знаний.

На вебинаре Яндекса 14 августа покажут, как собрать это на практике:

— Посчитать эмбеддинги
— Положить их в YDB с индексом
— Искать быстро, с фильтрацией, на SQL

Если делаете внутренние ИИ-инструменты, обязательно подключайтесь.
2
Форматирование чисел в f-строках

Начиная с версии Python 3.6, стали доступны f-строки. Это удобный способ форматирования текста. Но не все знают, что он умеет вставлять float числа с настраиваемым количеством знаков после запятой.

Допустим у нас есть float число pi = 3.14159265359. Если мы его просто скорвертируем в строку, то она примет следующий вид:

>>> str(3.14159265359)
'3.14159265359'


Но что если важно выписать только до сотых долей? Делается это черех f-строку:

>>> f'Число Пи это {pi:.2f}'
'Число Пи это 3.14'


После обьявления имени переменной мы вставляем следующую комбинацию: .2f, где цифра как раз и указывает, сколько знаков после запятой нужно преобразовать в строку. Более подробно это описано в PEP 498.

#fstring
👍82🔥1
httpx: Модуль для асинхронных HTTP запросов

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

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

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

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

Код с поста доступен тут

#модули
1
Списковые включения

На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.

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

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

Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.

#списки #словари
👍5
Метод join у строк

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

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

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

#строки
👍5
Преобразование текста в аудио на Python

Используя библиотеку gTTS (Google Text-to-Speech) для Python, можно легко преобразовывать текст в аудиофайлы. Эта библиотека использует API Google Translate для синтеза речи, обеспечивая высокое качество преобразования. Установка библиотеки производится стандартным способом через pip.

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

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

#python #gtts
1
Создание и использование виртуальной среды

virtualenv — инструмент для создания изолированных сред Python. Программа создает папку, которая содержит все необходимые исполняемые файлы для использования пакетов, необходимых для проекта.

Создание новой виртуальной среды требуется только один раз для каждого проекта, для которого вы хотите изолировать зависимости:
python3 -m venv venv

Это создаст папку venv, содержащую оснастку сценариев и копию python самого двоичного файла. Название папки не имеет значения.

Чтобы активировать виртуальную среду, нужно запустить activate файл: source venv/bin/activate и далее мы можем свободно устанавливать любые зависимости, которые никак не скажутся на работе в будущих проектах.

#python #virtualenv
Создание QR-кода с помощью qrcode инструмента

Воспользуйтесь этим простым, но эффективным инструментом для генерации QR-кодов. Для рисования изображений необходима библиотека Pillow, так что проверьте ее наличие перед началом работы.

Для получения изображения с QR-кодом достаточно использовать метод make(), передав ему нужные данные. Сохранить результат можно с помощью метода save(), примененного к созданному объекту изображения.

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

#qrcode
Автоматизация мобильных приложений с помощью uiautomator2

Сегодня мы поговорим о библиотеке uiautomator2, которая предоставляет мощные инструменты для автоматизации тестирования и взаимодействия с мобильными приложениями на платформе Android.

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

Что такое uiautomator2?

uiautomator2 - это Python-библиотека, предоставляющая возможность управления устройствами Android и взаимодействия с приложениями на них. Она основана на Google's Android Testing Support Library и является мощным инструментом для автоматизации действий на устройствах Android.

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

#python #uiautomator2 #автоматизация
3
This media is not supported in your browser
VIEW IN TELEGRAM
Как построить с нуля команду AI-автоматизации и перестать перекладывать задачи руками?

В новом выпуске подкаста «Расскажите про MWS» мы поговорили с Никита Казарян, руководителем AI-направления в MWS..
Разобрали, как внедрение AI-инструментов помогает:

— Чем AI-агенты отличаются от классической автоматизации
— Как RAG, MCP и Fine-tuning помогают бизнесу работать быстрее
— Кого искать в команду и почему «ленивые инженеры» часто оказываются лучшими

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

Смотрите и слушайте на всех популярных платформах:
YouTube
VK Видео

Яндекс Музыка
Apple Podcasts
Mave Digital
2
Красивый вывод таблиц

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

Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов.

Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string().

#трюки #prettytable
👍4
Важное про цифры и Юникод

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

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

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

#числа #юникод
Скачиваем видео с YouTube

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

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

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

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

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

#python #youtube
👎5👍31