Zen of Python
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Больше📈 Аналитический обзор Telegram-канала Zen of Python
Канал Zen of Python (@zen_of_python) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 18 953 подписчиков, занимая 6 786 место в категории Технологии и приложения и 34 781 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 18 953 подписчиков.
Согласно последним данным от 27 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -157, а за последние 24 часа — 7, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.56%. В первые 24 часа после публикации контент обычно набирает 6.30% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 381 просмотров. В течение первых суток публикация набирает 1 195 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 5.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, rust, pip, api, install.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
Благодаря высокой частоте обновлений (последние данные получены 28 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
pip — это менеджер пакетов по умолчанию для Python 2 / 3 (где «двойка» не установлена;
pip3 — это явно указанный менеджер пакетов для Python 3.
Если у тебя установлен только Python 3, pip и pip3 будут работать одинаково.
Как проверить, какая версия связана с pip
pip --version # pip 20.0.2 from /usr/lib/python2.7/site-packages/pip (python 2.7)
pip3 --version # pip3 21.2.4 from /usr/lib/python3.8/site-packages/pip (python 3.8)
#основы
@zen_of_pythonTypedDict («Типизированный словарь»). В этом посте разберём, зачем нужен, как правильно использовать и какие возможности открывает.
TypedDict — это специальный тип данных, что позволяет создавать словари с явно заданными типами для ключей и значений. Таким образом, вы можете описать структуру словаря, как будто это объект с фиксированными полями.
from typing import TypedDict
class User(TypedDict):
name: str
age: int
email: str
В обычных словарях Python ключи и значения могут быть абсолютно любыми, и это даёт большую гибкость, но вместе с тем усложняет контроль и проверку данных. TypedDict позволяет добавить статическую типизацию к словарям, тем самым снизить вероятность неожиданных ситуаций с вашими экземплярами.
В примере выше мы создаем класс User, который наследуется от TypedDict. Теперь словари типа User должны иметь ключи name, age и email с типами str, int и str соответственно.
Теперь при создании экземпляра:
user: User = {
"name": "Alice",
"age": 30,
"email": "alice@example.com"
}
если в словаре отсутствует обязательный ключ или тип значения не совпадает, современные инструменты статической типизации (например, mypy) выдадут ворнинг.
Опциональные ключи
Бывает, что не всегда все ключи словаря на месте. В TypedDict их можно сделать необязательными (total=False):
class User(TypedDict, total=False):
nickname: str
bio: str
#основы
@zen_of_pythonst.navigation(position="top");
— поддерживается темная тема через st.context.theme;
— большинство виджетов и элементов теперь поддерживают параметр ширины width;
— добавлена настройка CORS для разрешённых источников;
— в сообщениях об ошибках появился удобный копипаст-кнопка;
— теперь можно запускать сервер Streamlit на порту 3000 без дополнительных настроек;
— добавлена поддержка форматов номеров для колонок с числами и прогрессбаров.
Release Note
#инструмент
@zen_of_python
🫡 — Если отдаю честь за такую работу
a = {"x": 1, "y": 2}
b = {"y": 2, "x": 1}
a == b # True
То есть, равенство проверяется по парам ключ‑значение, а не по их порядку (в отличие от списка).
Почему обычный dict сравнивается по содержанию, а не по порядку?
— Оптимизация: словари предназначены для быстрой работы по ключу (хэширование);
— Благодаря «разделённой таблице» (split-table) в реализации CPython, словарь может одновременно эффективно хранить и порядке вставки, и хэш-структуру.
#основы
👌 — Если всё по красоте
class UsedDict(dict):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._used_keys = set()
def __getitem__(self, key):
self._used_keys.add(key)
return super().__getitem__(key)
def get_unused_keys(self):
return set(self.keys()) - self._used_keys
— Наследуемся от стандартного dict, чтобы сохранить привычный интерфейс;
— При инициализации создаём пустое множество _used_keys, в котором будем хранить все ключи, к которым обращались;
— Переопределяем метод __getitem__, который вызывается при чтении значения по ключу mydict[key]. В этом методе сначала отмечаем ключ как использованный, а затем возвращаем значение;
— Добавляем метод get_unused_keys, который возвращает разницу между всеми ключами словаря и теми, которые использовались.
Пример использования:
config = UsedDict({
"host": "localhost",
"port": 8080,
"debug": True,
"timeout": 30
})
print(config["host"]) # используется
print(config["port"]) # используется
unused = config.get_unused_keys()
print("Неиспользованные ключи:", unused)
# Выведет: Неиспользованные ключи: {'debug', 'timeout'}
#основы