PythonTalk
4.75K subscribers
1.44K photos
47 videos
7 files
1.3K links
Привет, меня зовут Олег Булыгин 👋

🐍 Здесь я делюсь полезной информацией для тех, кто пишет код на Python: от разработки до Data Science.

По вопросам: @obulygin91
Download Telegram
Так, телеграм надругался над постом, поэтому заново 😁

Вечный холивар: Табы vs. Пробелы
⚔️⚔️

Один из тех споров, который жил, жив и будет жить.

Собрал все основные аргументы в наглядных карточках ☝️

Но правильный ответ в этом споре есть, и он не про табы или пробелы. Он про консистентность.

Пишете для себя — делайте как хотите. Хоть вперемешку, интерпретатор схавает (до поры до времени). Но как только вы работаете в команде, личные предпочтения засовываете подальше. Договорились на 4 пробела — значит, 4 пробела. Договорились на табы — значит, табы. Единообразие всегда важнее личных убеждений.

К счастью, почти любая IDE умеет по нажатию на Tab ставить нужное количество пробелов. Так что можно быть ленивым и соответствовать PEP 8 одновременно. Удобно же.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥1🙏1
Нейросети теперь сами для себя придумывают экзамены 🧑‍💻

Все привыкли к бенчмаркам вроде HumanEval, которые давно заезжены и на которых все модели уже натренировались. Как понять, какая LLM реально программирует лучше? И вот Tencent выкатили в опенсорс AutoCodeBenchmark.

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

Как это работает?
1. Берется простейший кусок кода (типа a+b).
2. LLM получает задание "эволюционировать" его во что-то сложное и написать тесты.
3. Самое главное: сгенерированный код тут же отправляется в безопасную "песочницу" (MultiLanguageSandbox), где он компилируется и выполняется. Если код — нерабочая дичь, он отбраковывается.
4. Только после успешной проверки код превращается в полноценную задачу бенчмарка.

Такой подход "генерация-проверка" гарантирует, что задачи в бенчмарке корректны и решаемы. Это позволяет бесконечно генерировать новые тестовые наборы, которые модели еще не видели. По сути, это новый, куда более честный и масштабируемый способ измерять реальные возможности кодовых LLM.

Описание архитектуры смотрим тут:
▶️Разбираем AutoCodeBenchmark от Tencent: нейросеть, которая сама придумывает и проверяет задачи по программированию ◀️

Интересно, как скоро модели научатся генерировать бенчмарки, на которых они сами будут выглядеть лучше конкурентов? 😊

#щупаем_сорцы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2🙏111
🔥 Ещё один ИИ-помощник... для GitHub? 🤔

GitFriend — open-source тулза, которая хочет стать вашим лучшим другом при работе с репозиториями.

Что обещают разработчики:
▫️ AI-чат: Задать глупый вопрос по Git или GitHub (на базе Groq), попросить помощи с ошибкой.
▫️ Генератор README.md для проекта.
▫️ Gitmoji: Чтобы помочь вам налепить эмодзи в коммиты 🥴.

Заявлена аутентификация через Google, а в планах – прямая интеграция с GitHub OAuth, чтобы пушить README одной кнопкой, кастомные шаблоны и дашборд активности.

Потыкать онлайн-версию можно тут, а исходники, как водится, на GitHub.
👍22🔥1
👨‍💻 Минутка почти еженедельной рубрики «какого черта вы это делаете руками в 2025?».

Сегодняшний пациент — самописные скрипты для отслеживания изменений файлов.

Видел это миллион раз: бесконечный цикл, внутри os.walk, time.sleep(1) и сверка mtime. Наивный, прожорливый и кривой костыль, который жрет CPU впустую, даже когда ничего не происходит. Чуть лучше — взять старый-добрый watchdog.

Но есть watchfiles.

Это библиотека с ядром на Rust, использующее нативные API ОС (inotify на Linux, FSEvents на macOS и т.д.), и удобная обертка на Python. Пока событий нет — потребление ресурсов нулевое. Реакция мгновенная.

Это тот же паттерн, что и у Ruff, Polars или uv: тяжелую, низкоуровневую работу, где важна производительность, мы делегируем нативному коду. А в Python оставляем удобство и бизнес-логику.

Я тут расписал все это в деталях: заглянул под капот watchfiles, сравнил с watchdog и самописными костылями, показал, как пользоваться CLI и для чего это вообще нужно в разработке.

👉 Читать: watchfiles: руководство по эффективному мониторингу файлов в Python

Или вы до сих пор считаете, что while True + os.walk — это норм? Расскажите, почему 🌚

#это_база
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥321🙏11
Кроме кода, в любом проекте есть куча менеджмента, маркетинга и прочей рутины, которая откровенно бесит.

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

Что внутри:
• Как автоматизировать рутинные процессы, не связанные с кодом. ⚙️
• Практическое применение нейросетей для своих проектов и бизнеса. 🤖
• Как спихнуть на ИИ до 50% работы: от генерации контента до аналитики. 🧠
• Маркетинг для технарей: как сделать так, чтобы ваш продукт заметили. 🚀
• И да, про тот самый «личный бренд» 👨‍💻

Забирайте папку и изучайте:
👉 https://t.me/addlist/9kSSGH72xH9hMDBi
👍3🔥1👌1
"Играем" в MMORPG, где вашим персонажем управляет Python-скрипт 🎮

Игруха Artifacts — это бесплатная сэндбокс-MMORPG, где каждое действие персонажа — это HTTP-запрос. Вся "игра" — это, по сути, написание умного бота для самого себя. И это основная механика, а не читерство.

Можно управлять сразу 5-ю персами, создав полностью автономный отряд 🤖. Один рубит лес, второй добывает руду, третий крафтит шмот, двое других этим шмотом зачищают локи от мобов. А вы сидите, пьете кофе и смотрите.

🐍 Как это работает на Python?

Для основы не нужно ничего, кроме библиотеки requests.

1️⃣ Регистрируемся на сайте и создаем персонажа.
2️⃣ Находим свой токен в профиле. Это ваш ключ к API, держите его в секрете.
3️⃣ Пишем код.

Допустим, ваш ник CodeWarlock и вы хотите переместить его на клетку (0, 1), где пасутся нубские курицы для фарма.

Вот как будет выглядеть ваш первый скрипт:

import requests
import time

# --- Ваши данные ---
MY_TOKEN = "Bearer ВАШ_TOKEN_СЮДА"
CHARACTER_NAME = "CodeWarlock"
BASE_URL = "https://api.artifactsmmo.com/my"

# --- Заголовки для всех запросов ---
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": MY_TOKEN
}

def move_character(x, y):
"""Отправляет персонажа на указанные координаты."""
url = f"{BASE_URL}/{CHARACTER_NAME}/action/move"
payload = {"x": x, "y": y}

try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status() # Проверит на ошибки HTTP (типа 4xx, 5xx)

data = response.json()
print(f"Перемещаемся на ({x}, {y})...")

# После любого действия есть кулдаун. Его нужно дождаться.
cooldown = data.get('cooldown', 0)
print(f"Кулдаун: {cooldown} секунд. Ждем...")
time.sleep(cooldown)
print("Готов к следующему действию!")

except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
# Тут можно посмотреть тело ответа, чтобы понять, что не так
if 'response' in locals():
print(f"Ответ сервера: {response.text}")

# --- Запускаем нашего "игрока" ---
if __name__ == "__main__":
# Двигаемся на клетку с курицами
move_character(0, 1)

# Тут можно добавить следующую логику:
# fight_monster("chicken")
# ...и так далее


Все! Аналогично делаются запросы на бой, сбор ресурсов, крафт. Меняется только эндпоинт (вместо /move будет /fight) и payload.

Идеальный тренажер для новичков, чтобы на практике понять API, и шикарная "песочница" для опытных, чтобы построить сложные цепочки автоматизации.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍32🔥1🙏1🆒1
🚀 Хотите выйти за рамки базового Python и перейти к профессиональной разработке? Пора сделать следующий шаг - онлайн-курс «Python Developer. Professional»

📅 Старт обучения - 29 сентября

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

Чему вы научитесь:
- Писать надёжный, быстрый и безопасный код
- Проектировать архитектуру приложений и профилировать производительность
- Работать с современными фреймворками и библиотеками
- Понимать устройство чужого и собственного ПО, обеспечивать его поддержку и развитие
- Применять Python в реальных задачах - от backend-а до data-driven решений

Этот курс - шаг в настоящую инженерию на Python. По итогам вы не просто прокачаете скиллы, а сможете уверенно работать на middle+/senior-уровне.

⌛️ Успейте записаться до старта 29 сентября! Пройдите вступительное тестирование и займите место в группе: https://otus.pw/3lTc/


Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
👍2🔥1🤔11
🇨🇳 Alibaba выкатили свой бесплатный ИИ-редактор кода — Qoder.

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

Главная фича — Quest Mode:
Ты текстом описываешь задачу со всеми спеками, а агент сам планирует, пишет код, тестирует и вносит правки в проект. Асинхронно.

Что ещё интересного:
- Под капотом пачка моделей (Claude, GPT, Gemini и др.), которые подбираются автоматом под задачу.
- Запоминает контекст и твой стиль кода.
- Пока что полностью бесплатно на время превью.

Хороший подгон, с учетом того, что Trae, который был временно бесплатный и я его использовал, стал платным (ну почти, бесплатно там теперь только Gemini Flash).

Пошел тестировать ☕️

#тулбокс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1🎉1🙏1👨‍💻1🆒1
Два интересных факта из нового отчета JetBrains 🤔

Вышел свежий "The State of Python 2025" от JetBrains. Вот парочка самых интересных тезисов:

1️⃣ Половина Python-разработчиков — новички.
Да-да, 50% имеют меньше 2 лет проф. опыта. КАЖДЫЙ ВТОРОЙ.


2️⃣ 83% сидят на старых версиях Python, сжигая миллионы.
Отчет показывает, что переход, например, с Python 3.10 на 3.13 дает +42% к скорости. БЕЗ ИЗМЕНЕНИЯ КОДА.
А компании могли бы экономить сотни тысяч, а то и миллионы долларов в год на облаках. Но кому-то просто "некогда" поменять цифру в Dockerfile.


Это, конечно, только верхушка. Про взлет FastAPI, тотальное доминирование Rust и революцию в инструментах я расписал в материале на Дзен.
🫱🏻Читать: Половина — новички, а миллионы сгорают на ровном месте. Разбор отчета JetBrains ◀️◀️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥11
Говорят, в Python всё логично и предсказуемо. Ага, конечно.

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

#квиз
🔥3👍2👨‍💻1👀1🆒11
Что получим при запуске кода?
Anonymous Quiz
11%
[]
2%
()
31%
1
27%
True
11%
False
10%
SyntaxError
8%
TypeError
👍3🔥221🙏1👨‍💻1
Окей, с первым квизом кто-то справился. Но вы же не думали, что на этом всё? 😈

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

#квиз
Please open Telegram to view this post
VIEW IN TELEGRAM
👍211🔥1🙏1👌11
Что получим при запуске кода?
Anonymous Quiz
49%
True
4%
None
26%
False
15%
SyntaxError
6%
15
👍44🔥31🙏1👌1
Алгоритмическая задачка 🐍

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

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

🎯 Задача:
Напишите функцию digital_root(n: int) -> int, которая принимает на вход целое положительное число n. Функция должна складывать все цифры этого числа до тех пор, пока результат не станет однозначным числом (то есть меньше 10). Именно это однозначное число и нужно вернуть.

Примеры для ясности:

Вход: n = 942
Шаг 1: 9 + 4 + 2 = 15 (результат двузначный, продолжаем)
Шаг 2: 1 + 5 = 6 (результат однозначный, останавливаемся)
Результат: 6


Вход: n = 16 -> 1 + 6 = 7 -> 7


Вход: n = 493193 -> 4+9+3+1+9+3 = 29 -> 2+9 = 11 -> 1+1 = 2 -> 2


Жду ваши элегантные и не очень решения в комментариях! 👇🏻
🔥3👍1🙏1👌1
Давайте вернемся к логическим операторам.
С or многие из вас уже ошиблись. А что насчет оператора and? Думаете, он проще? Как бы не так.

Вот вам финальная задачка из этого цикла. И уже завтра вы получите ответ на вопрос: "🤔 ДА ПАЧАМУ?!".

#квиз
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥11