Библиотека питониста | Python, Django, Flask
Все самое полезное для питониста в одном канале. Учиться у нас: clc.to/6e5Csg Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36 #WXSSA
Ko'proq ko'rsatish📈 Telegram kanali Библиотека питониста | Python, Django, Flask analitikasi
Библиотека питониста | Python, Django, Flask (@pyproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 37 678 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 3 500-o'rinni va Rossiya mintaqasida 16 939-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 37 678 obunachiga ega bo‘ldi.
26 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -146 ga, so‘nggi 24 soatda esa -4 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 5.37% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.72% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 024 marta ko‘riladi; birinchi sutkada odatda 1 023 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent питониста, навигация, буст, строка, api kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все самое полезное для питониста в одном канале.
Учиться у нас: clc.to/6e5Csg
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
#WXSSA”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 27 Iyul, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl
↑ ↑ ↑ ↑
версия python abi платформа
· py3-none-any — чистый Python, работает везде
· cp314-cp314 — только CPython 3.14, версия-специфичный ABI
· cp311-abi3 — CPython 3.11+, стабильный ABI (работает на 3.11 и новее)
🔤 API vs ABI — в чём разница
API — что написано в заголовочном файле (`Python.h`): сигнатуры функций, макросы, типы.
ABI — что реально в скомпилированном бинарнике: имена символов, смещения полей в структурах, размеры. Две библиотеки с разными ABI несовместимы — и падение может быть молчаливым.
🔑 Три уровня ABI в Python
· cp3XY — версия-специфичный ABI. Один wheel на каждый Python. Нужно выпускать новый каждый год.
· abi3 — стабильный ABI. Один wheel для Python 3.X и всех новых версий. Но не работает на free-threaded Python.
· cp3XYt — ABI free-threaded Python (без GIL). Отдельные теги: cp313t, cp314t.
⚡ Почему free-threaded Python сломал abi3
В GIL-версии структура PyObject выглядела так:
struct PyObject {
Py_ssize_t ob_refcnt; // байт 0
PyTypeObject *ob_type; // байт 8
};
В free-threaded версии (Python 3.14+):
struct PyObject {
uintptr_t ob_tid; // id потока-владельца
uint16_t ob_flags;
PyMutex ob_mutex; // per-object lock
uint8_t ob_gc_bits;
uint32_t ob_ref_local; // локальный счётчик ссылок
Py_ssize_t ob_ref_shared; // атомарный счётчик
PyTypeObject *ob_type; // теперь на другом смещении!
};
ob_type переехал — wheel скомпилированный под старую раскладку прочитает не те байты. Crash или тихая порча памяти.
🆕 Python 3.15: новый стабильный ABI abi3t
PyObject стал непрозрачным (opaque struct) — нельзя обращаться к полям напрямую, только через функции API. Это скрывает детали реализации и делает возможным один wheel для обеих сборок.
Стратегия для мейнтейнеров:
Python 3.12-3.13 → cp312-abi3 (один wheel) Python 3.14 → + cp314t (free-threaded) Python 3.15+ → cp315-abi3.abi3t (оба в одном)Итого: тег в имени wheel = гарантия совместимости на уровне бинарного кода. 📍 Навигация: Вакансии • Задачи • Собесы Библиотека питониста #буст
Впереди 7 недель работы со своим репозиторием. Вебинары проходят вживую и остаются в записи.Стартуем 31 августа. До конца июля можно присоединиться по ранней цене, а доступ к материалам останется бессрочным 😀 🔗 Посмотреть, что будет на курсе 🏃♀️ Proglib Academy
chain(it1, it2) — склеить несколько итерируемых в одну
· chain.from_iterable(nested) — разгладить вложенный список лениво
· islice(it, start, stop) — срез итератора (без отрицательных индексов)
· compress('ABCDEF', [1,0,1,0,1,1]) — фильтр по булевой маске → A, C, E, F
· filterfalse(pred, it) — противоположность filter(), где предикат False
🙂 Используешь периодически
· starmap(pow, [(2,5),(3,2)]) — применить функцию с распаковкой кортежей
· pairwise([1,2,3]) — скользящие пары: (1,2),(2,3) — Python 3.10+
· batched(range(10), 3) — разбить на чанки фиксированного размера — Python 3.12+
· groupby(items, key=func) — группировка (данные должны быть отсортированы!)
· accumulate(nums, func) — накопительные суммы или любая бинарная функция
· takewhile(pred, it) — брать пока предикат True
· dropwhile(pred, it) — пропускать пока предикат True, потом всё остальное
🤔 Знаешь но редко тянешься
· tee(it, n=2) — разделить один итератор на n независимых
· zip_longest(a, b, fillvalue=None) — zip до самого длинного, заполняя пропуски
· combinations(items, r) — все комбинации без повторений
· combinations_with_replacement('AB', 2) — комбинации с повторениями: AA, AB, BB
· permutations(items, r) — все перестановки, порядок важен
😴 Скорее забыл что существует
· product(a, b) — декартово произведение = вложенные for-циклы
· count(start, step) — бесконечный счётчик, удобно с zip()
· cycle([1,2,3]) — бесконечно повторять итерируемое (хранит копию!)
· repeat(10, times=3) — повторить объект n раз
pairwise и batched — две которые большинство не знает, хотя именно они убирают кучу boilerplate кода.
Согласны?
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#бустПоэтому в большой команде недостаточно просто выбрать хорошую модель. ❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения.🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥 Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью. 🔗 Занять место на вебинаре 🏃♀️ Proglib Academy
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽! Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом 🔗 Занять место и забрать 3 курса
- Устройство LLM. - Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.). - Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning. 👉Смотреть закрытый урок на YouTube Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться. 🔗 Занять место на курсе
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
stack.pop() # → 3
stack.pop() # → 2
А вот insert(0, x) и pop(0) — это O(n). Каждый раз сдвигается весь массив:
# Медленно — 200k итераций занимают несколько секунд
for n in range(200_000):
numbers.insert(0, n)
# Быстро — то же количество итераций, мгновенно
for n in range(200_000):
numbers.append(n)
🔄 Queue (FIFO) → deque
Если нужна очередь — берите collections.deque. Операции с обоих концов работают за O(1):
from collections import deque
queue = deque()
queue.append(1) # добавить справа
queue.append(2)
queue.append(3)
queue.popleft() # → 1 (первый вошёл — первый вышел)
queue.popleft() # → 2
deque — это double-ended queue. Можно добавлять и удалять с обоих концов эффективно:
queue.appendleft(0) # добавить слева — O(1)
queue.pop() # удалить справа — O(1)
queue.popleft() # удалить слева — O(1)
Правило одной строкой
Нужен стек → list. Нужна очередь → deque. Использовать list как очередь через pop(0) — это O(n) на каждую операцию.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст