Python Ready | Программирование
30.1K subscribers
1.25K photos
81 videos
568 links
Авторский канал по разработке на Python.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3NJEEh

Реклама на бирже: https://telega.in/c/python_ready
Download Telegram
👩‍💻 Строковое форматирование и базовые операции со строками!

Набор основных инструментов для работы со строками: современные способы форматирования (f-строки, str.format, format, format_map), эффективные преобразования символов (maketrans, translate), проверка идентификаторов и методы выравнивания. Удобная шпаргалка для типовых задач подготовки и обработки текстовых данных.

👉 Python Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍9🤝81
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Best-of-Python — рейтинг лучших библиотек и инструментов с открытым исходным кодом!

Сохраняй если хочешь быстро находить лучшие библиотеки под любую задачу, от утилит и CLI-инструментов до фреймворков и сетевого программирования. Список обновляется еженедельно и содержит 390+ проектов, распределённых по 28 категориям. Все библиотеки ранжированы по качеству, активности и востребованности.

Оставляю ссылочку: GitHub 📱


👉 Python Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍8🤝71
Превратим любую лекцию в серию LinkedIn-постов за пару минут!

Сегодня создадим сервис, который берёт ссылку на YouTube-вебинар, прогоняет её через Whisper, а затем просит GPT сгенерировать 5 готовых LinkedIn-постов: каждый с заголовком, кратким анонсом и релевантными хэштегами.

Сначала скачиваем и транскрибируем аудио с тайм-кодами:
from pytube import YouTube

yt = YouTube("https://youtu.be/ВАШ_ID_ВИДЕО")
audio_path = yt.streams.filter(only_audio=True).first().download(filename="webinar.mp4")

result = client.audio.transcriptions.create(
model="whisper-1",
file=open(audio_path, "rb"),
response_format="verbose_json"
)
transcript = "\n".join(
f"[{int(seg['start']//60):02d}:{int(seg['start']%60):02d}] {seg['text']}"
for seg in result.segments
)


Далее формируем запрос к GPT для генерации постов:
prompt = (
"Ты — SMM-специалист. "
"На основе данного транскрипта лекции с тайм-кодами создай 5 LinkedIn-постов. "
"Для каждого поста укажи:\n"
"• Заголовок (до 70 символов)\n"
"• Основной текст (2–3 коротких абзаца)\n"
"• 3–5 релевантных хэштегов\n"
"Формат ответа:\n"
"Пост 1:\n"
"Заголовок: …\n"
"Текст: …\n"
"Хэштеги: #… #… #…\n"
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": prompt},
{"role": "user", "content": transcript}
]
)
print(response.choices[0].message.content.strip())


🔥 Идеально для продвижения ваших знаний и экспертного контента в LinkedIn — серия постов готова без лишних усилий!

👉 Python Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍118
Создаём мини-UUID генератор: короткие уникальные ID для ссылок, токенов и тестовых данных!

Иногда вместо длинного UUID вроде 550e8400-e29b-41d4-a716-446655440000 нужен компактный, но всё ещё достаточно уникальный идентификатор — для коротких ссылок, временных токенов, тестовых данных, имён файлов и т.п.

Импортируем модули:
import uuid
import secrets
import string


Классический UUID v4:
def generate_uuid():
return str(uuid.uuid4())


Обрезанный UUID на основе hex (берём первые N символов).
UUID v4 содержит 32 hex-символа. Можно использовать префикс, если уровень уникальности устраивает.
def generate_short_uuid(length=8):
return uuid.uuid4().hex[:length]


Генерация «человеческого» короткого ID из букв/цифр. Удобно для URL, CLI и тестовых данных. Используем secrets для криптографически стойкой случайности.
ALPHABET = string.ascii_lowercase + string.digits

def generate_human_id(length=8):
return "".join(secrets.choice(ALPHABET) for _ in range(length))


Пример использования:
print("UUID v4:      ", generate_uuid())
print("short UUID: ", generate_short_uuid())
print("human ID: ", generate_human_id())


Пример вывода:
UUID v4:       3f2a2e46-ff0b-4d56-9b65-b793f9e3b8c1
short UUID: a9c1f2d3
human ID: k4x9b1qz


Создание короткой ссылки:
def make_short_link(base_url="https://my.app/"):
# В реальной системе потребуется хранить соответствие short - original
return base_url + generate_human_id(7)

print(make_short_link())


🔥 Удобно для генерации коротких токенов, временных ссылок, идентификаторов сущностей, тестовых данных или имён файлов.
Для критичных security-задач увеличивайте длину или используйте secrets.token_urlsafe.

👉 Python Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥169👍9
Как zip() может сломать данные и как это предотвратить?

Обычный zip() останавливается на самой короткой коллекции, лишние элементы просто игнорируются.

Пример скрытого бага:
names  = ["Alice", "Bob"]
scores = [10, 20, 30]

for name, score in zip(names, scores):
print(name, score)


Элемент 30 потеряется без ошибок и предупреждений.

Чтобы Python явно проверял длины, используйте strict=True:
for name, score in zip(names, scores, strict=True):
print(name, score)


Теперь, если длины не совпадают, вы сразу получите:
ValueError: zip() argument 2 is longer than argument 1


🔥 Добавляя strict=True, вы фиксируете инвариант длины и ловите ошибку в точке её появления.

👉 Python Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍1615
📂 Напоминалка по развороту списков!

Например, list.reverse() изменяет список на месте, а срез [::-1] возвращает новый список в обратном порядке.

На картинке — 5 способов развернуть список в Python, которые стоит держать под рукой.

Сохрани, чтобы не забыть!

👉 Python Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝21👍15🔥83
Генерация PDF-документов на Python!

В backend-разработке и автоматизации часто требуется формировать PDF-файлы: отчёты, инструкции, уведомления, сервисные документы. Для простых задач хорошо подходит лёгкая библиотека fpdf2.

Установка библиотеки:
pip install fpdf2


Импортируем основной класс, создаём PDF-документ и добавляем страницу (по умолчанию формат A4, единицы измерения — мм):
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()


Перед выводом текста задаём шрифт. FPDF поддерживает встроенные core-шрифты (Helvetica, Times, Courier и др.), которые не требуют подключения TTF:
pdf.set_font("Helvetica", size=12)


Метод cell позволяет выровнять текст по центру и перейти на новую строку:
pdf.set_font("Helvetica", style="B", size=16)
pdf.cell(
w=0, # на всю доступную ширину страницы
h=10,
text="My First PDF in Python",
new_x="LMARGIN",
new_y="NEXT",
align="C"
)


Для многострочного текста используем multi_cell, который автоматически обрабатывает переносы строк:
pdf.set_font("Helvetica", size=12)
pdf.multi_cell(
w=0,
h=10,
text="This PDF was created using Python and FPDF."
)


Когда все элементы добавлены, сохраняем PDF-файл:
pdf.output("report.pdf")
print("PDF created successfully!")


🔥 Важно: встроенные core-шрифты поддерживают только Latin-1. Для кириллицы и любого Unicode-текста необходимо подключать TTF/OTF-шрифты через add_font.

👉 Python Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2215🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
✍️ python-course — системный разбор языка от основ до продвинутых концепций.

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

📌 Оставляю ссылочку: python-course.eu

👉 Python Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝16👍9🔥73
Инициализация значений без if и лишней логики!

setdefault() возвращает текущее значение по ключу, а если ключ отсутствует, создаёт его с указанным дефолтом.

Это удобно, когда нужно работать с накоплением данных, а не с проверками. Пример группировки значений:
groups = {}

groups.setdefault("admins", []).append("alice")
groups.setdefault("admins", []).append("bob")


Результат:
{'admins': ['alice', 'bob']}


Без setdefault() тот же код обычно выглядит так:
if "admins" not in groups:
groups["admins"] = []
groups["admins"].append("alice")


setdefault() убирает условие и фиксирует инвариант: по этому ключу всегда лежит коллекция нужного типа.

Подходит не только для списков, но и для счётчиков и агрегатов:
stats.setdefault(user_id, 0)
stats[user_id] += 1


🔥 Пригодится везде, где словарь используется как аккумулятор данных: статистика, группировки, обработка событий, агрегации из API и БД.

👉 Python Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍13🤝112
😎 На Хабре вышел подробный туториал: «Руководство по PyTorch для новичков: создаём модель множественной регрессии с нуля»

В этой статье:
• Пройдёте полный путь от анализа данных и EDA до построения модели регрессии;
• Сравните классическую линейную регрессию из scikit-learn с нейросетью на PyTorch;
• Реализуете собственную многослойную модель, обучение, подбор гиперпараметров;
• Разберётесь, почему глубокое обучение не всегда выигрывает у простых моделей.


🔊 Продолжайте читать на Habr!


👉 Python Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1611🤝10
🔥 На stepik вышел курс, который учит Создавать настоящие AI-сервисы, а не просто запускать скрипты?

Этот практический курс по Python и FastAPI покажет, как собрать полноценное приложение с ИИ, базой данных, автогенерацией контента и Telegram-ботом.

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

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

🎁 48 часов действует скидка в 40% процентов

👉 Начать учиться на Stepik
12👍6👎5🔥4
👩‍💻 Работа с путями и файлами через pathlib!

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

В этом гайде:
Собираем пути без os.path.join;

Читаем и пишем файлы через удобные методы;

Проверяем существование и типы путей;

Обходим директории и фильтруем файлы.


pathlib делает файловую логику короче, понятнее и надёжнее, без сторонних библиотек.

👉 Python Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍13🔥12🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Awesome Python Applications — настоящие проекты вместо учебных примеров!

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

Оставляю ссылочку: GitHub 📱


👉 Python Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍75