Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
🛠 Что посмотреть: как создать продвинутый MCP-сервер на Python
MCP-сервер — это лёгкий, независимый сервер на Python, который обрабатывает запросы через собственный протокол (Message Control Protocol).
💡 Без Flask, FastAPI и Django — только чистый сокет и логика.
Что в видео:
— Как работает MCP-протокол
— Обработка сообщений и структура сервера
— Авторизация через Stytch (не просто access token)
— Хранение пользовательских заметок
— Как адаптировать под свой проект (API, чат, внутренний сервис)
🔗 Смотреть туториал: https://clc.to/UcCggQ
Библиотека питониста #буст
MCP-сервер — это лёгкий, независимый сервер на Python, который обрабатывает запросы через собственный протокол (Message Control Protocol).
💡 Без Flask, FastAPI и Django — только чистый сокет и логика.
Что в видео:
— Как работает MCP-протокол
— Обработка сообщений и структура сервера
— Авторизация через Stytch (не просто access token)
— Хранение пользовательских заметок
— Как адаптировать под свой проект (API, чат, внутренний сервис)
🔗 Смотреть туториал: https://clc.to/UcCggQ
Библиотека питониста #буст
👍8❤7🔥3
👉 Мифы и сказки вокруг производительности Python
🔎 Миф 1: «Python не медленный» (а то мы не знали)
Многие считают, что Python достаточно быстр, ведь это язык-«клей», где для тяжёлых вычислений используют GPU или вызывают C/C++/Rust-библиотеки. Но на самом деле, для множества задач Python всё же медленен.
🔎 Миф 2: «Если медленно, перепиши горячие участки на C/C++/Rust»
Это действительно часто помогает — оптимизировать 20% кода, где происходит 80% работы (принцип Парето). Однако Amdahl's law говорит, что ускорение одной части программы в итоге упирается в остальной код. После ускорения «горячих» мест, всё остальное начинает доминировать по времени исполнения.
🔎 Миф 3: «Python медленный, потому что он интерпретируемый»
Интерпретация даёт некоторое замедление, но гораздо больше времени уходит на выполнение динамической семантики Python: поиск типов, вызовы методов вроде
🔎 Статическая типизация и JIT — помогают, но не решают всё
Python набирает популярность с аннотациями типов, но статическая типизация не проверяется во время выполнения. Например:
Здесь добавление строк работает, но не соответствует типам. Значит, оптимизации на основе типов невозможны в чистом Python.
JIT-компиляторы (например, в PyPy) действительно могут ускорить Python, но они усложняют предсказуемость производительности и требуют понимания, как именно JIT оптимизирует код. Иногда оптимизации «ломаются» при изменении программы, даже если код кажется простым.
🔎 Абстракции в Python — не бесплатны
Рассмотрим простой алгоритм:
Если вынести вычисление в отдельную функцию:
То производительность падает из-за накладных расходов на вызовы функций. Если вместо кортежей использовать
Скорость падает ещё больше, потому что добавляется обращение к атрибутам объектов и накладные расходы, связанные с объектной моделью.
🔎 Кэш и память — главный узкий профиль
Основная проблема Python — не вычисления, а память. Современные процессоры быстро выполняют операции, но доступ к памяти (особенно к ОЗУ) намного медленнее.
Python-программы часто имеют плохую кэш-локалити из-за разброса объектов в памяти:
В памяти объекты
Это проблема, которую невозможно решить только компиляцией или JIT, не изменяя семантику языка.
🔗 Если интересно, почему Python медленный, посмотрите подробный доклад: https://clc.to/YWmMIA
Библиотека питониста #буст
Многие считают, что Python достаточно быстр, ведь это язык-«клей», где для тяжёлых вычислений используют GPU или вызывают C/C++/Rust-библиотеки. Но на самом деле, для множества задач Python всё же медленен.
Это действительно часто помогает — оптимизировать 20% кода, где происходит 80% работы (принцип Парето). Однако Amdahl's law говорит, что ускорение одной части программы в итоге упирается в остальной код. После ускорения «горячих» мест, всё остальное начинает доминировать по времени исполнения.
Интерпретация даёт некоторое замедление, но гораздо больше времени уходит на выполнение динамической семантики Python: поиск типов, вызовы методов вроде
__getattribute__()
, упаковку и распаковку значений, выделение памяти и т.д. Это не зависит от того, интерпретируется код или компилируется.Python набирает популярность с аннотациями типов, но статическая типизация не проверяется во время выполнения. Например:
def add(x: int, y: int) -> int:
return x + y
print(add('hello ', 'world')) # type: ignore
Здесь добавление строк работает, но не соответствует типам. Значит, оптимизации на основе типов невозможны в чистом Python.
JIT-компиляторы (например, в PyPy) действительно могут ускорить Python, но они усложняют предсказуемость производительности и требуют понимания, как именно JIT оптимизирует код. Иногда оптимизации «ломаются» при изменении программы, даже если код кажется простым.
Рассмотрим простой алгоритм:
def algo(points: list[tuple[float, float]]):
res = 0
for x, y in points:
res += x**2 * y + 10
return res
Если вынести вычисление в отдельную функцию:
def fn(x, y):
return x**2 * y + 10
def algo(points: list[tuple[float, float]]):
res = 0
for x, y in points:
res += fn(x, y)
return res
То производительность падает из-за накладных расходов на вызовы функций. Если вместо кортежей использовать
@dataclass
:from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
def fn(p: Point):
return p.x**2 * p.y + 10
def algo(points: list[Point]):
res = 0
for p in points:
res += fn(p)
return res
Скорость падает ещё больше, потому что добавляется обращение к атрибутам объектов и накладные расходы, связанные с объектной моделью.
Основная проблема Python — не вычисления, а память. Современные процессоры быстро выполняют операции, но доступ к памяти (особенно к ОЗУ) намного медленнее.
Python-программы часто имеют плохую кэш-локалити из-за разброса объектов в памяти:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = [Person('Alice', 16), Person('Bob', 21)]
В памяти объекты
Person
и их атрибуты могут быть разбросаны, что приводит к множеству переходов по указателям и к частым кеш-промахам.Это проблема, которую невозможно решить только компиляцией или JIT, не изменяя семантику языка.
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥1😁1
Холивар: запускать все тесты — или только нужные
Вопрос для питонистов: что лучше — полный прогон тестов при каждом пуше или выборочный запуск только нужных?
⚡️ Сторонники выборочного запуска говорят:
— «Мы изменили одну функцию в
— CI отрабатывает за 5 минут, а не за 40
— Меньше простаивания разработчиков в ожидании билдов
— Логи чище, меньше случайных падений
🐢 Сторонники полного прогона отвечают:
— «Вчера просто поправили формат даты в
— Легче отлавливать неожиданные регрессии
— Нет сюрпризов после релиза
— CI — это страховка, а не ускоритель
Вот, например, кто-то предложил использовать Snob — инструмент, который экономит время и деньги, анализируя граф зависимостей Python-проекта и выбирая для запуска только те тесты, которые реально затронуты изменениями в коде.
📌 Что делает Snob:
— Отбрасывает ~99% тестов, не связанных с изменениями
— Ускоряет разработку и снижает стоимость CI
— Работает на основе статических импортов, а не предсказаний
— Не заменяет полный регрессионный прогон, но сильно помогает при разработке больших кодовых баз
⚠️ Чего Snob не делает:
— Не ловит динамические импорты, сайд-эффекты во время выполнения и другие неявные зависимости
💬 А теперь вопрос — вы бы доверили такому инструменту свой пайплайн, или всё-таки только полный прогон даёт спокойствие?
Библиотека питониста #междусобойчик
Вопрос для питонистов: что лучше — полный прогон тестов при каждом пуше или выборочный запуск только нужных?
⚡️ Сторонники выборочного запуска говорят:
— «Мы изменили одну функцию в
utils.py
— зачем нам прогонять тесты на API, авторизацию и экспорт в Excel?»— CI отрабатывает за 5 минут, а не за 40
— Меньше простаивания разработчиков в ожидании билдов
— Логи чище, меньше случайных падений
🐢 Сторонники полного прогона отвечают:
— «Вчера просто поправили формат даты в
utils.py
, и тихо умер отчёт в аналитике — в тестах API это бы поймали»— Легче отлавливать неожиданные регрессии
— Нет сюрпризов после релиза
— CI — это страховка, а не ускоритель
Вот, например, кто-то предложил использовать Snob — инструмент, который экономит время и деньги, анализируя граф зависимостей Python-проекта и выбирая для запуска только те тесты, которые реально затронуты изменениями в коде.
📌 Что делает Snob:
— Отбрасывает ~99% тестов, не связанных с изменениями
— Ускоряет разработку и снижает стоимость CI
— Работает на основе статических импортов, а не предсказаний
— Не заменяет полный регрессионный прогон, но сильно помогает при разработке больших кодовых баз
⚠️ Чего Snob не делает:
— Не ловит динамические импорты, сайд-эффекты во время выполнения и другие неявные зависимости
💬 А теперь вопрос — вы бы доверили такому инструменту свой пайплайн, или всё-таки только полный прогон даёт спокойствие?
Библиотека питониста #междусобойчик
❤8👍1
🧐 Зоопарк моделей в ML: с чего начать?
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
👍1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
👍7❤2❤🔥1
👍 Важные обновления популярных библиотек
— pydantic-ai / pydantic-ai-slim / pydantic-evals / pydantic-graph 0.6.0 — развитие AI-интеграций на базе Pydantic.
— torch 2.8.0, torchvision 0.23.0, torchaudio 2.8.0 — крупное обновление PyTorch-стека.
— sagemaker 2.250.0 — новая версия фреймворка для ML на AWS.
— memray 1.18.0 — профайлер памяти для Python.
— locust 2.38.0 — нагрузочное тестирование.
— redis 6.3.0 — Python-клиент Redis.
— openai 1.99.0 — доступ к API OpenAI, включая GPT-5.
— hypothesis 6.137.0 — property-based тестирование.
— accelerate 1.10.0 — ускорение обучения моделей.
— sentence-transformers 5.1.0 — эмбеддинги и семантический поиск.
— deepdiff 8.6.0 — сравнение сложных Python-структур.
🔥 Опыт других
— Python: генераторные функции
— Как я заменил кучу флагов двумя словарями в Python
— 15 типичных ошибок начинающих автоматизаторов (и как их избежать)
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2
Forwarded from Библиотека задач по Data Science | тесты, код, задания
Backend Python/Django — от 3000 до 6000 $, удалёнка
Python Developer — до 170 000 ₽, удалёнка
Odoo/Python разработчик — до 200 000 ₽, удалёнка
Архитектор в AI проектах, удалёнка
Backend Lead (Python/Go), удалёнка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😁3
В реальном мире строки редко совпадают «под копирку».
Например:
"aPpLe iPhone® 14 Pro Max"
"iphone 14 pro max"
Вопрос — чем сравнивать? Ответ зависит от того, что именно вы хотите поймать.
Идеален как первый шаг: убрать мусор, стандартизировать формат.
import re
def clean(t):
t = t.lower()
t = re.sub(r"[®™©]", "", t)
return re.sub(r"\s+", " ", t).strip()
clean("iPhone® 14 Pro Max")
# 'iphone 14 pro max'
Умеет считать похожесть на уровне символов. Отлично для быстрого «на коленке».
from difflib import SequenceMatcher
SequenceMatcher(None, "iphone 14 pro max", "i phone 14 pro max").ratio()
# 0.97
Оптимизированный под скорость и адекватнее реагирует на перестановку слов.
from rapidfuzz import fuzz
fuzz.WRatio("apple iphone 14 pro max", "iphone 14 pro max apple")
# 95
Нейросети, которые понимают значение, а не только текстовый паттерн.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
m = SentenceTransformer('all-MiniLM-L6-v2')
cosine_similarity(
[m.encode("wireless headphones")],
[m.encode("bluetooth earbuds")]
)[0][0]
# 0.75
—
re
→ всегда первым шагом—
difflib
→ мелкие задачи без зависимостей—
RapidFuzz
→ продакшн, большие объёмы, сложные текстовые вариации—
Sentence Transformers
→ смысл важнее скорости, есть GPU#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍4🔥2
Офлайн-митап Peer To Beer x Точка Банк: приходите слушать доклады и делиться своими историями
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
🐤 Доклады
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
🐥 Открытый микрофон
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
‼️ Нетворкинг и тематические настолки
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
🥳 Регистрация
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Поделюсь личным опытом работы с Golang, разбирая как его сильные стороны, так и аспекты, которые можно улучшить. Обсудим минимализм в дизайне, особенности defer, работу с горутинами и многое другое, с акцентом на баланс между плюсами и минусами.
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
Расскажу свой опыт работы с Go, и почему с высоты многолетнего опыта на Python мне выглядит странным большое внимание к Go в мире веб-разработки.
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Представьте: приходите на собеседование, называете сумму, а рекрутер сразу отвечает: «Хорошо, без проблем».
Звучит приятно? Не всегда. Часто это значит, что вы только что продешевили.
Чтобы не занижать себе цену:
📌 Полный разбор с примерами тут: https://proglib.io/sh/qJDGQMk2Hg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1
📺 Хватит коллекционировать туториалы!
Десятки роликов по ML, сотни вкладок, папка «Посмотреть позже» трещит по швам. В голове — обрывки знаний о нейросетях и Pandas.
Знания без системы — это просто «шум». Они не превращаются в навыки и проекты.
Наш курс «ML для старта в Data Science» — это не ещё один туториал. Это система. Чёткий путь от «каши» в голове до первого сильного проекта в портфолио.
И да, чтобы старт был ещё проще — при покупке курса по ML вы получаетекурс по Python в подарок
👉 Превратите «шум» в навык
А вы сталкивались с «информационной кашей»? Как выбирались? 👇
Десятки роликов по ML, сотни вкладок, папка «Посмотреть позже» трещит по швам. В голове — обрывки знаний о нейросетях и Pandas.
Знания без системы — это просто «шум». Они не превращаются в навыки и проекты.
Наш курс «ML для старта в Data Science» — это не ещё один туториал. Это система. Чёткий путь от «каши» в голове до первого сильного проекта в портфолио.
И да, чтобы старт был ещё проще — при покупке курса по ML вы получаете
👉 Превратите «шум» в навык
А вы сталкивались с «информационной кашей»? Как выбирались? 👇
👍1
Модуль collections — это кладезь специализированных контейнеров, которые упрощают код, делают его читаемее и иногда даже быстрее, чем стандартные dict, list, set и tuple.
Вот 10 приёмов, которые могут вас удивить:
Используется для подсчёта количества вхождений элементов в последовательности и поиска наиболее частых значений:
from collections import Counter
words = ['galaxy', 'nebula', 'asteroid', 'comet', 'gravitas', 'galaxy', 'stardust', 'quasar', 'galaxy', 'comet']
word_counts = Counter(words)
print(word_counts.most_common(2))
Создаёт объекты с доступом к полям по имени и индексу, занимают меньше памяти, чем классы:
from collections import namedtuple
Book = namedtuple('Book', ['title', 'author', 'year_published', 'isbn'])
my_book = Book("The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 1979, "978-0345391803")
print(my_book.title, my_book.year_published)
Автоматически создаёт значение для нового ключа, что удобно для группировки данных:
from collections import defaultdict
grouped_scores = defaultdict(list)
for player, score in [('A', 8), ('B', 7), ('A', 6)]:
grouped_scores[player].append(score)
print(grouped_scores)
Двусторонняя очередь с быстрым добавлением и удалением с обоих концов:
from collections import deque
q = deque([1, 2, 3])
q.append(4)
q.popleft()
print(q)
Сохраняет порядок вставки и умеет перемещать элементы в конец или начало:
from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
Позволяет искать ключи в нескольких словарях, как будто это один:
from collections import ChainMap
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
chain = ChainMap(dict1, dict2)
print(chain['b'])
Хранит только последние N элементов, автоматически удаляя старые:
from collections import deque
history = deque(maxlen=3)
for cmd in ["cd ~", "ls", "pwd", "mkdir test"]:
history.append(cmd)
print(history)
Легко создаёт многоуровневые словари без явной инициализации:
from collections import defaultdict
import json
def tree(): return defaultdict(tree)
nested = tree()
nested['user']['name'] = 'Alice'
print(json.dumps(nested, indent=2))
Можно складывать, вычитать и находить пересечение частот элементов:
from collections import Counter
c1 = Counter(a=3, b=1)
c2 = Counter(a=1, b=2)
print(c1 + c2, c1 & c2)
Быстро сдвигает элементы вправо или влево:
from collections import deque
d = deque([1, 2, 3, 4])
d.rotate(1)
print(d)
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤6🔥2
6 августа 2025 вышли новые версии сразу двух ключевых инструментов для Python-разработчиков.
Обновление исправляет несколько ошибок из прошлых версий:
— Исправлен баг с использованием стратегии
UNNEST
в QuerySet.bulk_create()
с внешними ключами (регрессия из 5.2.1).— Исправлено падение при фильтрации по составному первичному ключу с кортежем, содержащим выражения.
— Исправлено падение при валидации моделей с
GeneratedField
или сложными constraints
из Q
и Case
.— Добавлена совместимость с docutils 0.22.
— Исправлено падение при работе с
ManyToManyField
в моделях с составным PK.📄 Читать релиз-ноутсы Django 5.2.5
Это шестой maintenance-релиз Python 3.13, включающий:
— ~200 багфиксов и улучшений сборки
— Обновления документации
— Мелкие оптимизации
📄 Полный список изменений
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
🔥 Успей поднять квалификацию по выгодной цене!
Только до 17 августа у вас есть последняя возможность купить наши курсы по старым ценам.
🔹 Математика для Data Science:
— Базовый: (сейчас)
— Ультра:
— VIP:
🔹 Программирование на Python:
🔹 Алгоритмы и структуры данных:
🔹 Архитектуры и шаблоны проектирования:
🔹 AI-агенты для DS специалистов:
🔹 Основы IT для непрограммистов:
🔹 Базовые модели ML:
❗ Важно: Курсы из линейки Frontend Basic полностью снимаются с продажи. 17 августа — буквально последний день, когда их можно будет приобрести.
Успей купить до повышения — осталось 4 дня!
👉 Зафиксировать цену и начать учиться
Только до 17 августа у вас есть последняя возможность купить наши курсы по старым ценам.
🔹 Математика для Data Science:
— Базовый: (сейчас)
26 399₽
→ (будет) 33 900₽
— Ультра:
35 199₽
→ 44 900₽
— VIP:
59 829₽
→ 75 900₽
(выгода больше 16 000₽!)🔹 Программирование на Python:
24 990₽
→ 32 900₽
🔹 Алгоритмы и структуры данных:
31 669₽
→ 39 900₽
🔹 Архитектуры и шаблоны проектирования:
24 890₽
→ 32 900₽
🔹 AI-агенты для DS специалистов:
54 000₽
→ 59 000₽
🔹 Основы IT для непрограммистов:
14 994₽
→ 19 900₽
🔹 Базовые модели ML:
6 990₽
→ 9 900₽
❗ Важно: Курсы из линейки Frontend Basic полностью снимаются с продажи. 17 августа — буквально последний день, когда их можно будет приобрести.
Успей купить до повышения — осталось 4 дня!
👉 Зафиксировать цену и начать учиться
❤1