Telegram RegisterThe public register of Telegram

Channel

Библиотека Python разработчика | Книги по питону

@BookPython

On this record: Growth · Engagement · What this channel posts · Reactions · Posts · Citations · Handles named that no longer answer · Telegram's recommendations · Cite this entry

18,181subscribers

-10 since we began measuring on 6 August 2026

Risers and fallers across the register · movement among entries of 10,000–31,623.

Register entry

Telegram ID-1001496092873
TypeChannel
Username@BookPython
DescriptionПогружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq
CreatedBetween 1 May 2019 and 31 July 2021— estimated from Telegram’s id allocation, not measured. How this range is calculated.
First recorded6 August 2026
Last confirmed live12 August 2026
Measurements held8
Confirmed unchanged1 time, most recently 12 August 2026
On Telegramt.me/BookPython

Growth

18,18118,19318,1876 August 2026 — 18,191 subscribers6 August 2026 — 18,191 subscribers6 August 2026 — 18,193 subscribers7 August 2026 — 18,192 subscribers8 August 2026 — 18,189 subscribers9 August 2026 — 18,186 subscribers11 August 2026 — 18,187 subscribers12 August 2026 — 18,181 subscribers6 August 202612 August 2026
8 measurements spanning 6 days, net -10. Dots are measurements; the straight line between them is drawn to join them, not to claim we know the path taken in between — snapshots are recorded only when a count changes, so gaps mean “no change observed”, never “interpolated”. The vertical axis spans 18,179–18,195 and does not start at zero.
Measurement log — every subscribers count we have recorded
Measured (UTC)SubscribersChange
12 Aug 2026, 16:3718,181-6
11 Aug 2026, 15:4218,187+1
9 Aug 2026, 13:2318,186-3
8 Aug 2026, 16:0618,189-3
7 Aug 2026, 16:0718,192-1
6 Aug 2026, 19:3018,193+2
6 Aug 2026, 09:3018,191no change
6 Aug 2026, 09:2918,191first reading

Engagement

25 posts held, back to 8 July 2026the reader has not yet reached the start of this channel’s public history, so older posts may sit further back, unread. Read across 17 pagesof Telegram’s post history, 20 posts per page.

ERR · 30 days
5.33%
avg views ÷ 18,181 subscribers
Avg views / post
969
22 posts measured
Reaction rate
0.476%
reactions ÷ views · ER floor
Posts in window
22
of 25 held

ERR is average views per post over the last 30 days divided by subscribers, the definition TGStat uses, so this figure is comparable with the one you will see elsewhere. It falls structurally as a channel grows: a high ERR on a small channel and a low one on a large channel describe reach mathematics, not quality. We publish the figure and the sample it came from and pass no verdict on it.

ER is defined industry-wide as (forwards + reactions + comments) ÷ views— note the denominator is views, not subscribers. Telegram’s public web preview carries views and reactions but not forward or comment counts, so the reaction rate above is the reactions term only and is therefore a floor: the true ER for this channel is higher by an amount we have not measured and will not estimate. It is computed over the 21 of 22 measured posts that carry a reaction reading, and over those same posts' views.

What these figures were computed from
WindowRolling 30 days · latest post in window 12 August 2026
Posts held25 (8 July 202612 August 2026)
Views total21,307
Reactions total97
Forwards / commentsnot exposed by the public surface — not measured, not estimated
Readings taken13 Aug 2026, 00:15 UTC

Views are a single reading per post, taken at the time above. A post published in the last day or two is still accumulating views, which pulls the 30-day average down slightly. That is a property of the standard definition rather than a fault in it, so we keep the definition rather than “correcting” the number into something nobody can reproduce.

Precision. Telegram publishes view counts on its public widget in short form — 8.12K, 3.7M — so any reading at or above 1,000 reaches us rounded to three significant figures, and only counts below 1,000 are exact. Averages and rates derived from them are shown to the same precision rather than to the unit: a figure like 3,701,250 would assert digits nobody measured.

Reaction counts are published per emoji and rounded the same way, so a total below 1,000 is exact and a larger one is a sum that may carry a rounded component from each emoji above 1,000. Because it is a sum, it does not look rounded — read a large reaction total as three significant figures per contributing emoji rather than as the figure it prints.

What this channel posts

Photos
1,060
Videos
403
Links
1,200

Lifetime counters from Telegram’s own channel header, read 13 August 2026 — not the date at the top of this page, which is when the subscriber count was last read. A count marked was rounded by Telegram before we ever saw it — t.me prints these counters in full below 1,000 and to three significant figures above, so ≈142,000 means somewhere between 141,500 and 142,499.

Reaction mix

112 reactions across 24 posts, in 5 distinct kinds. The most used accounts for 71.4% of them.

Every reaction kind recorded on the sample, most used first
ReactionCountShareShare, drawn
👍8071.4%
🔥2421.4%
54.46%
💩21.79%
10.893%

No sentiment is inferred, and none should be read in. This table is ordered by count and by nothing else. Emoji do not carry stable meaning across languages or communities — 🙏 is thanks in one channel and mourning in another — so we publish which ones were pressed and how often, and pass no judgement on what an audience meant by them.

Precision. Telegram publishes reaction counts per emoji and short-forms each one — 4.34K, 1.2M — so any single kind at or above 1,000 reaches us at three significant figures, and only counts below 1,000 are exact. The shares above are ratios of those figures and carry the same error. This is also why the total here can differ slightly from a reaction total printed elsewhere on the page: both are sums of the same rounded parts, taken over samples with different edges.

Coverage. Reactions were read on 24 of the 25 sampled posts in this sample. Summed by Telegram’s own count on each post — not by adding up the per-emoji breakdown above — those same posts carry 112reactions in total: the kind of figure the paragraph above means by “a reaction total printed elsewhere on the page”.

Measured over the 25 most recent posts we hold, published 8 July 2026 to 12 August 2026, using the newest reading held for each. Telegram Stars are excluded: they are a payment, not a reaction, and they have their own section.

Recent posts

12 Aug 2026, 09:11 UTC346 views3 reactionsread 13 August 2026

Профайлинг и Оптимизация Производительности Когда ваш код уже не просто работает, а должен летать, на первый план выходит умение профилировать и оптимизировать производительность. Для Python это не просто трюки, а глубокое понимание CPython и его инструментов. Шаг 1: Точное Измерение (Profiling) Прежде чем оптимизировать, мы должны знать, где именно тратятся ресурсы. Слепое улучшение кода — это путь к бессмысленны

👍3

12 Aug 2026, 07:03 UTC472 views2 reactionsread 13 August 2026
Photo

One Day Offer для Python-разработчиков!💚 15 августа открываем двери в команду Agent Execution Framework ⚡️ Коллеги создают платформу для GenAI‑агентов в банке — делают так, чтобы ИИ реально работал в серьёзных финпроцессах: с безопасностью, нагрузкой и пользой. Чем предстоит заниматься: ✔️ развивать backend на Python ✔️ подключать LLM, инструменты, базы знаний и RAG ✔️ строить пайплайны оценки качества агентов ✔️

👍2

10 Aug 2026, 07:12 UTC686 views4 reactionsread 13 August 2026

С версии Python 3.0 выбрасывание исключения внутри блока except автоматически добавляет перехваченное исключение в атрибут __context__ нового исключения. Это приводит к тому, что оба исключения отображаются в traceback: try: 1 / 0 except ZeroDivisionError: raise ValueError('Zero!') Результат выполнения: Traceback (most recent call last): File "test.py", line 2, in <module> 1 / 0 ZeroDivisionError:

👍2🔥2

9 Aug 2026, 16:49 UTC721 views6 reactionsread 13 August 2026

Прямой доступ к атрибутам объекта может быть не самой лучшей идеей. Если клиенты взаимодействуют с объектом через методы, вы всегда можете изменить способ обработки каждого запроса, в то время как при прямом доступе к атрибутам это может быть невозможно. Разные языки решают эту проблему по-разному. В Ruby синтаксически невозможно получить прямой доступ к атрибуту: obj.x — это вызов метода x. В Java рекомендуется дел

👍5🔥1

8 Aug 2026, 12:00 UTC652 views2 reactionsread 13 August 2026

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max

💩2

6 Aug 2026, 06:23 UTC832 views3 reactionsread 13 August 2026

Рассмотрим следующую иерархию классов: class GrandParent: pass class Parent1(GrandParent): pass class Parent2(GrandParent): pass class Child(Parent1, Parent2): pass В каком порядке будет производиться поиск метода Child.x()? Наивный подход заключается в рекурсивном поиске через все родительские классы, что даст порядок: Child, Parent1, GrandParent, Parent2. Такой метод используется во многих яз

👍2🔥1

5 Aug 2026, 07:39 UTC878 views4 reactionsread 13 August 2026

Иногда вам нужно запустить блок кода с несколькими контекстными менеджерами. Например: with open('f') as f: with open('g') as g: with open('h') as h: pass Начиная с Python 2.7 и 3.1, это можно сделать с помощью одного выражения with: o = open with o('f') as f, o('g') as g, o('h') as h: pass До этого можно было использовать функцию contextlib.nested: with nested(o('f'), o('g'), o(

👍3🔥1

4 Aug 2026, 06:08 UTC921 views4 reactionsread 13 August 2026

UTF-8 - это кодировка с переменной длиной. Один символ может быть закодирован с использованием одного, двух, трёх или четырёх байтов. Это означает, что нельзя начать чтение строки в кодировке UTF-8 с произвольного байта, так как это может случайно разрушить символ: In : lion = 'Löwe' In : lion.encode('utf-8')[2:] Out: b'\xb6we' In : lion.encode('utf-8')[2:].decode('utf-8') ... UnicodeDecodeError: 'utf-8' codec can'

👍4

3 Aug 2026, 06:46 UTC985 views2 reactionsread 13 August 2026

Тесты могут требовать временные файлы или директории. Для этого отлично подойдет модуль tempfile. Так как временные файлы обычно нужно удалять после использования, tempfile предоставляет как контекстный менеджер, так и простые функции: import os import tempfile with tempfile.TemporaryDirectory() as dir_path: open(os.path.join(dir_path, 'a'), 'w').close() open(os.path.join(dir_path, 'b'), 'w').close()

👍2

31 Jul 2026, 05:17 UTC≈1,190 views3 reactionsread 13 August 2026

Когда вы создаете кастомный метод __repr__ для объекта, обычно нужно включить представление его атрибутов. Однако важно помнить, что нужно явно вызывать repr(), так как форматирование вызывает str() вместо repr(). Пример простого кода: class Pair: def __init__(self, left, right): self.left = left self.right = right def __repr__(self): class_name = type(self).__name__ repr_l

👍21

30 Jul 2026, 06:21 UTC≈1,190 views6 reactionsread 13 August 2026

В Python блок else можно использовать не только после if, но и после циклов for и while. Код внутри else выполняется только в том случае, если цикл завершился естественным образом, то есть не был прерван с помощью break. Наиболее распространённый случай использования этого — поиск элемента в цикле с прерыванием через break, если элемент найден: # Пример 1: Список содержит нечётное число first_odd = None for x in [

👍4🔥2

28 Jul 2026, 06:29 UTC≈1,100 views5 reactionsread 13 August 2026

Функция itertools.chain позволяет объединить несколько итерируемых объектов, чтобы работать с ними, как с единым целым: from itertools import chain print(list(chain(['a', 'b'], range(3), set('xyz')))) # Вывод: ['a', 'b', 0, 1, 2, 'x', 'z', 'y'] Иногда нужно проверить, пуст ли генератор (точнее, исчерпан ли он). Для этого можно попытаться получить следующий элемент с помощью next(). Если элемент есть, его нужно в

👍4🔥1

Showing the 12 most recent of 25 posts we hold for @BookPython. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.

Citation-graph rank

Citation-graph rank — 988,114 of 1,160,990entries in the measured graph. A weighted position computed from the forward and mention edges below — republished posts weigh more than named mentions — and recomputed periodically, over the whole graph. Published only as this ordinal position, never as a score: a position is a fact, and a score printed beside one channel’s name would read as a verdict this register does not make. The two counts beneath stay separate for the same reason mentions are never summed with forwards anywhere else on this page — a named-by count costs nothing to manufacture. The top 100 by this measure, or how it is computed.

Forward network

Republished by

Channels on the register that have forwarded this channel's posts into their own feed.

Built only from forwarded posts we have actually read, on both sides. Coverage is early and deliberately incomplete: a missing link means we have not read the post that would prove it, never that the relationship does not exist. Counts are distinct forwarded posts observed, so they only ever go up as we read more.

Mentions

Named by 5 registered channels — every channel on the register whose own posts have named this one, by its current username or any other username it currently holds, merged from two separately captured readings of the same fact so a namer caught by only one of them is not missed and a namer both caught is not counted twice. A username this channel has since dropped is not matched — that handle may belong to someone else now, and crediting today’s namer to yesterday’s owner would misattribute it.

Names

Channels on the register whose handles appear in this channel's posts.

A mention is a weaker signal than a forward and is counted separately for that reason — naming a channel is not republishing it, and a handle in a post body is easy to place deliberately. The post counts beside each row below are distinct posts in which the handle appeared, from posts we have read on both sides — the “Named by N registered channels” figure above is a different count, of distinct NAMING CHANNELS rather than posts, and is not the sum of the rows under it.

Appears in Telegram’s recommendations for other channels

The reverse of the list above, and a different kind of signal. This does not require this channel to have ever been asked about directly — each row below is a channel we DID ask Telegram about, whose Telegram-generated list happened to include this one. A channel can appear here with an empty list above it, because being named by someone else’s query is independent of having been queried itself.

Physics.Math.Code
@physics_lib · 145,853
Telegram ranks this channel #54 of 72 here — alongside 71 others — read 13 August 2026

This channel appears in 1 seed channel's Telegram-generated recommendation list in total. Each is Telegram’s list for THAT channel, not this one — see how this is measured.

Cite this entry

A live page changes as we take new readings, so a citation should name the measurement it is based on, not just the URL. The line below cites the subscriber count as measured 12 August 2026 — this entry's latest reading, not the date you are reading this.

“Библиотека Python разработчика | Книги по питону” (@BookPython), 18,181 subscribers as measured 12 August 2026. Telegram Register, tgregister.com/channel/BookPython.

Full measurement history, CC BY 4.0. Every reading this register holds for this entry, not just the latest one, as a dated, downloadable record: CSV · JSON. Free to use with attribution to tgregister.com. Each file carries its own generation timestamp, which is the figure to cite for exactly when the data was retrieved.