PythonTalk
5.01K subscribers
1.6K photos
50 videos
6 files
1.37K links
Привет, меня зовут Олег Булыгин 👋

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

По вопросам: @obulygin91
Download Telegram
Операторы присваивания в Python

😴 Присваивание? Да это и так все проходят в первый час освоения Python!

🤭 А что, еще можно сокращенно записывать арифметические операции с присваиванием?

🤔 Битовые операции, что это?

🙉 Про моржей слышал, у них бивни такие.

🍆 А множественные присваивания – это же вообще миф!

#анатомия_питона
🔥12👍41🙏1💯1
Бесплатный курс по ИИ-агентам от Microsoft

У Microsoft на GitHub лежит бесплатный курс — AI Agents for Beginners. Лекции, код, всё в наличии.

Есть небольшой подвох — курс плотно завязан на экосистему Microsoft (Azure, Semantic Kernel, AutoGen). Но если отбросить этот маркетинговый нюанс, внутри есть реально полезные вещи.

🎯 Какие темы в фокусе?

▫️Agentic Design Patterns: Материал по паттернам проектирования.
▫️Tool Use: Отдельный урок по использованию инструментов. Это одна из ключевых фич современных агентов.
▫️Agentic RAG: Тоже вынесен в отдельный блок. Показывают, как совмещать агентов с поиском по базам знаний.
▫️Multi-Agent Design Pattern: Разбор того, как заставить нескольких агентов работать вместе.

Cами концепции и паттерны универсальны, так что знакомьтесь с ними и помните про альтернативы.

Есть и на русском, хоть и в виде автоматического перевода через GitHub Actions. Качество, конечно, не идеальное, но для понимания сути его вполне хватит.

🔗 Ссылка: https://github.com/microsoft/ai-agents-for-beginners
🔥42👍22
💣 Ваш requirements.txt — мусор?

И почти всегда корень зла один — команда pip freeze > requirements.txt.

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

В итоге всё это непонятно, как обновлять и страшно трогать, если нужно, что-то удалить.

Но есть инструменты, которые всё это исправят.

Вот вам статейка, где рассмотрены три способа — от базового pip freeze (чтобы вы поняли, почему он плох) до pip-tools и джедайского уровня с Poetry и PDM:
👉 requirements.txt: полное руководство по управлению зависимостями в Python

Признавайтесь в комментах, кто до сих пор генерит зависимости через pip freeze? ✍️

#это_база
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥152👍21🙏1
🤯 Легенда AI Андрей Карпаты снова в деле. Он выложил nanochat — проект, который позволяет собрать клон ChatGPT с нуля.

Бюджет? $100.
Время? ~4 часа на облачном сервере с 8xH100.

Это полный конвейер: 8000 строк чистого, минималистичного кода, который демистифицирует весь процесс — от обучения токенизатора и предобучения модели до файнтюнинга и RL.

Адаптировал и перевёл руководство по этой крутоте.
Внутри разбираем всё по шагам:
- ⚙️ Подготовка окружения: зачем тут uv и Rust.
- 📚 Обучение токенизатора: создаем собственный словарь для LLM.
- 🧠 Pretraining: рождение интеллекта и самый дорогой этап.
- 🎓 Midtraining & SFT: учим модель диалогу и полируем до блеска.
- 🎯 RL: опциональный этап для «натаскивания» на конкретные задачи.
- 💰 Итог: что мы реально получаем за $100?

Читаем здесь:
🧠 Собираем свой ChatGPT за $100: Полное руководство по nanochat Андрея Карпаты ◀️

#годный_опенсорс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍32👀22🎉1🆒1
Задачка про анаграммы в строке 🐍

👨‍💻 У нас есть две строки, s1 и s2. Нужно написать функцию, которая определит, содержит ли строка s2 в себе любую из перестановок строки s1 в качестве непрерывной подстроки.

Проще говоря, является ли какая-либо анаграмма s1 подстрокой в s2.

Для ясности, пара примеров 👇🏻
# Пример 1
s1 = "abc"
s2 = "lecabee"
# Вывод: True, потому что в s2 есть подстрока "cab",
# а это перестановка "abc".

# Пример 2
s1 = "abc"
s2 = "lecaabee"
# Вывод: False, потому что ни "abc", ни "acb", ни "bac" и т.д.
# не встречаются в s2 как единая подстрока.

Простое решение "в лоб" тут, конечно, есть, но оно не впечатлит 🌝 Хочется увидеть что-то изящное и эффективное.

Как решать будем? 🧠

#алгособес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥22👌1
This media is not supported in your browser
VIEW IN TELEGRAM
Надоело смотреть на стандартные графики функции потерь?

🏂 Встречайте, LossRider — библиотека для построения графиков с seaborn-подобным интерфейсом, которая на выходе генерирует не жалкий .png, а трек для... Line Rider.

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

Автор даже приложил примеры с данными из реальной ML-статьи про u-µP.

Есть поддержка нескольких линий (hue — для каждого свой наездник!), логарифмических шкал и кастомизации осей.

#фана_ради
🔥10👍221
🤥 Врут и не краснеют

По данным свежего исследования от hh.ru, 54% работодателей сталкивались с откровенной липой в резюме кандидатов. Почти каждый второй!

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

Кто у нас в лидерах этого маскарада?
🥇 Разработчики (20%)
🥈 Тестировщики и руководители проектов (по 15%)
🥉 Менеджеры продуктов (12%)

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

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

При этом 71% компаний, как утверждается, выкупают ложь уже на собеседовании. Звонки на прошлые места работы, сверка с трудовой, проверка соцсетей — проверяют всё.

И что в итоге?
Для 43% работодателей такая ложь — это мгновенный отказ. Не из-за некомпетентности, а из-за вранья.

Надеюсь, в таком цирке надолго не застрянем 😩

#денюжки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😢3👀2🙈211
🐍 Разбор задачи: анаграмма в строке

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

Давайте посмотрим на два основных подхода 👇


🐢 Решение "в лоб"

Был предложен самый прямолинейный подход: сгенерировать все возможные перестановки (анаграммы) строки s1 и проверить, есть ли хоть одна из них в строке s2.

Вот как это выглядит:

from itertools import permutations

def check_inclusion_bruteforce(s1: str, s2: str) -> bool:
all_permutations = permutations(s1)
for p in all_permutations:
if "".join(p) in s2:
return True
return False


Как это работает?
Просто, как валенок: берём s1 = "abc", получаем "abc", "acb", "bac", "bca", "cab", "cba" и по очереди ищем каждую из них в s2.

В чём проблема?
В производительности! Сложность генерации всех перестановок — O(k!), где k — длина s1. Для строки из 10 символов это уже 3,628,800 операций, а для 13 — больше 6 миллиардов 😬


🚀 Скользящее окно

А теперь — элегантный и максимально эффективный способ. Вместо перебора всех анаграмм, мы будем проверять "отпечатки" подстрок в s2. Для этого идеально подходит техника скользящего окна и счётчики (collections.Counter).

Это лучшее решение по сочетанию эффективности и идиоматичности Python.

from collections import Counter

def check_inclusion_optimal(s1: str, s2: str) -> bool:
len1, len2 = len(s1), len(s2)
if len1 > len2:
return False

s1_counter = Counter(s1)
window_counter = Counter()

for i in range(len2):
# Добавляем правый символ в окно
window_counter[s2[i]] += 1

# Если окно стало слишком большим, убираем левый символ
if i >= len1:
left_char = s2[i - len1]
if window_counter[left_char] == 1:
del window_counter[left_char]
else:
window_counter[left_char] -= 1

# Сравниваем счётчики, как только окно достигло нужного размера
if window_counter == s1_counter:
return True

return False


Как это работает?
1️⃣ Создаём "эталонный" счётчик символов для строки s1. Например, для "abc" это будет {'a': 1, 'b': 1, 'c': 1}.
2️⃣ Запускаем "окно" размером с s1 по строке s2.
3️⃣ На каждом шаге сдвигаем окно на один символ вправо: добавляем новый символ в наш счётчик окна и убираем самый левый (старый).
4️⃣ После каждого сдвига сравниваем счётчик символов в окне с "эталонным" счётчиком s1. Если они совпали — ура, мы нашли анаграмму! 🎉

Чего по сложности?
Время: O(N), где N — длина s2. Мы проходим по s2 всего один раз. Линейное время, быстрее некуда!
Память: O(1), так как размер счётчиков не превышает размер алфавита (например, 26 для английских букв).

#алгособес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103👍22
Помните, обсуждали инструменты для автоматизации составления резюме?

На нашем рынке, оказывается, тоже такое есть — вот ИИ-ассистент, который полностью автоматизирует процесс поиска работы:

⭐️ Она сама составляет резюме, на основании опыта работы и публикует его на хх.ру.

⭐️ Делает до 20 откликов в день.

⭐️ Пишет индивидуальное сопроводительное под каждую вакансию (можно выбрать стиль сообщения).

⭐️ Переписывается с рекрутером и отвечает на его вопросы. А еще помогает в подготовке к собесам - внутри приложения есть отдельный тренажер, где можно пройти тестовый собес к любой вакансии.

Пользователи отмечают, что с Софи поиск работы занимает 10-15 минут в день, что очень разгружает время.

Ребята работают всего пару месяцев и открывают доступ партиями. Следующий доступ откроется 21 октября в 19:00 по мск, будет 3 дня бесплатного теста.

Анонс будет в этом канале ◀️

Интересно будет потестить 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6🤔2🤯2👎1🙏1
Проверяем, насколько вы и ваш внутренний интерпретатор дружите с распаковкой.

#квиз
👍3🤔22
🔥7👍33
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍💻 IDE расслабили наши пальцы

ИИ-шные автодополнения научили нас очень быстро tabать 🌝

Но стоит зайти по ssh на сервер, в docker exec или просто открыть vim/nano, то там уже помощников нет (или я про них не знаю?). Остаешься один на один со своей скоростью печати.

Наткнулся на прикольный консольный тренажер слепой печати для программистов — ttyper.

Чем он лучше сотен других?

🎯 Тренировка на коде. Самое главное. Вместо унылых "The quick brown fox..." можно тренироваться на ключевых словах из Python и других языков. Наконец-то можно оттачивать def __init__(self): и import pandas as pd, а не рандомные тексты.

🦀 Написан на Rust. Для нас это сигнал качества. Работает молниеносно, не падает, не жрет ресурсы. Мелочь, а приятно.

🔧 Глубокая кастомизация. Можно создавать свои собственные "языки" для тренировки. Просто кидаете текстовый файл со списком слов — и вперед.

Скормите ему список всех переменных и функций из вашего рабочего проекта. Слабо без ошибок напечатать calculate_annual_recurring_revenue_with_churn_projection с первого раза? 😉

Забирайте и тренируйтесь: https://github.com/max-niederman/ttyper

Кстати, а какая у вас скорость печати? Признавайтесь в комментах, замеряли когда-нибудь? 👇

#тулбокс
👍5🔥432❤‍🔥1
👨‍💻 Мистер Мисикс на Python: эталонный пет-проект

Подписчик @nkerios написал, что ему пришла в голову идея сделать мистера Мисикса из "Рика и Морти" — чтобы он появлялся, отвечал на вопрос через локальную LLM и... исчезал. Прям как в мультике.

И ведь сделал же! Ссылка на GitHub, если хотите сразу заценить: Meeseeks Box .

Получился отличный шаблон для создания своих десктопных AI-утилиток на Python.

Что под капотом:
- Легковесная связка Flask + Pywebview.
- Приложение само находит активную модель в LM Studio. Не надо ничего ковырять руками.
- Чистая и управляемая покадровая SVG-анимация.

Разобрал всю техническую начинку по косточкам: Meeseeks Box: Как превратить Python-скрипт в десктопное приложение ◀️

Будьте как @nkerios👍

#щупаем_сорцы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥41🙏1🆒1