en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

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

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

Open in Telegram

Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq

Show more

📈 Analytical overview of Telegram channel Библиотека Python разработчика | Книги по питону

Channel Библиотека Python разработчика | Книги по питону (@bookpython) in the Russian language segment is an active participant. Currently, the community unites 17 973 subscribers, ranking 7 274 in the Technologies & Applications category and 36 654 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 17 973 subscribers.

According to the latest data from 28 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -96 over the last 30 days and by -2 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 5.41%. Within the first 24 hours after publication, content typically collects 2.64% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 973 views. Within the first day, a publication typically gains 475 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
  • Thematic interests: Content is focused on key topics such as numbers, yield, модуль, none, декоратор.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
“Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq”

Thanks to the high frequency of updates (latest data received on 29 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

17 973
Subscribers
-224 hours
-287 days
-9630 days
Posts Archive
Ibis Phuket Kata 3* — отличный старт отдыха у пляжа Ката Ищете доступный и комфортный отель в районе Ката? Ibis Phuket Kata —
Ibis Phuket Kata 3* — отличный старт отдыха у пляжа Ката Ищете доступный и комфортный отель в районе Ката? Ibis Phuket Kata — всего в 10 минутах от пляжа и в шаге от кафе, рынков и ночного базара. Локация: отель на улице Kata Road — удобно добираться до моря, магазинов и развлечений. Бассейн с шезлонгами и барбекю-зоной у бара — для отдыха после пляжа. Питание: завтраки шведский стол с фруктами, выпечкой и горячими блюдами. В ресторане закуски, тапас и напитки. Бар — в лобби и у бассейна. Ibis Phuket Kata — это ваш надёжный и доступный выбор в Ката: чисто, удобно, недорого и с пляжем в пешей доступности. Для спокойного отдыха без лишних изысков — отличный вариант! Хотите забронировать неделю отдыха? Это можно сделать на сайте pegast.ru Смотреть #реклама pegast.ru О рекламодателе

Что такое контекстный менеджер в Python? Контекстный менеджер в Python — это специальный тип объекта, который определяет методы enter() и exit() и используется с инструкцией with. Эти объекты часто применяются в операциях, которые требуют установки и освобождения ресурсов.  Частый сценарий — это работа с файлом:

with open('file.txt', 'r') as file:
    data = file.read()
Здесь контекстный менеджер гарантирует, что файл будет корректно закрыт после завершения блока with, даже если при чтении файла возникнет исключение. Вот как можно написать простой контекстный менеджер самостоятельно:

import time
 
class Timer:
    def __enter__(self):
        self.start = time.time()
 
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.end = time.time()
        print(f'Время выполнения: {self.end - self.start:.2f} секунд')
 
with Timer():
    # код, время выполнения которого нужно измерить
    time.sleep(2)
Мы в MAX 👉@BookPython

Т-Технологии зовут на Стековку 1 ноября в Екатеринбурге, Новосибирске и Нижнем Новгороде стартует квест для ИТ-специалистов —
Т-Технологии зовут на Стековку 1 ноября в Екатеринбурге, Новосибирске и Нижнем Новгороде стартует квест для ИТ-специалистов — с городским интерактивом, задачами на знание кода и смекалку. Что нужно делать? Решать онлайн- и офлайн-задания и получать за это баллы для своего города. Какой приз? В городе, который наберет больше всего баллов, устроят вечеринку. А самые активные участники смогут повлиять на выбор тематики и программы. Как участвовать? Просто зарегистрируйтесь до 31 октября

В Python вы можете переопределить оператор квадратных скобок ([]), определив магический метод getitem. Примером может быть об
В Python вы можете переопределить оператор квадратных скобок ([]), определив магический метод getitem. Примером может быть объект Cycle, который виртуально содержит бесконечное количество повторяющихся элементов:

class Cycle:
    def __init__(self, lst):
        self._lst = lst

    def __getitem__(self, index):
        return self._lst[index % len(self._lst)]

print(Cycle(['a', 'b', 'c'])[100])  # prints 'b'
Необычность здесь заключается в том, что оператор [] поддерживает уникальный синтаксис. Он может использоваться не только так — [2], но и так — [2:10], или [2:10:2], или [2::2], или даже [:]. Семантика — [start:stop:step], но вы можете применять её так, как вам нужно, для ваших собственных объектов. Но что же получает getitem в качестве параметра index, если использовать этот синтаксис? Для этого существуют объекты slice.

In : class Inspector:
...:     def __getitem__(self, index):
...:         print(index)
...:
In : Inspector()[1]
1
In : Inspector()[1:2]
slice(1, 2, None)
In : Inspector()[1:2:3]
slice(1, 2, 3)
In : Inspector()[:]
slice(None, None, None)
Вы даже можете комбинировать синтаксис кортежей и срезов:

In : Inspector()[:, 0, :]
(slice(None, None, None), 0, slice(None, None, None))
Slice не делает ничего, кроме как просто хранит атрибуты start, stop и step.

In : s = slice(1, 2, 3)
In : s.start
Out: 1
In : s.stop
Out: 2
In : s.step
Out: 3
Мы в MAX 👉@BookPython

Конференция «Алиса, что нового?» — уже скоро Яндекс в прямом эфире представит новое поколение своих генеративных моделей — он
Конференция «Алиса, что нового?» — уже скоро Яндекс в прямом эфире представит новое поколение своих генеративных моделей — они расширят возможности нейросети Алисы и позволят ей совершать действия во внешнем мире. Старт прямого эфира — 28 октября в 12:00. Первая конференция «Алиса, что нового?» состоялась весной этого года и была посвящена нейросети Алисе и анонсам умных устройств. На этот раз акцент будет сделан на крупном обновлении нейросети. Подпишитесь, чтобы не пропустить начало Записаться онлайн #реклама 16+ О рекламодателе

Вредные советы python разработчику l=[['a', 'b', 'c'], ['1', '2'], ['#']] sum(l, []) В Python можно выпрямить вложенные списк
Вредные советы python разработчику

l=[['a', 'b', 'c'], ['1', '2'], ['#']]
sum(l, [])
В Python можно выпрямить вложенные списки с помощью... функции sum(). Вот код (выполнять, пока никто не видит): Дело в том, что sum() принимает первым аргументом итерируемый объект, а вторым — значение, с которого начинается операция. По умолчанию это 0, но если указать пустой список [], то sum() начнёт с него. Затем sum() последовательно применяет операцию сложения к элементам первого аргумента, начиная со значения второго аргумента. В случае списков это означает конкатенацию. Мы в MAX 👉@BookPython

Крупнейший университет искусственного интеллекта Приглашаем на бесплатный курс по искусственному интеллекту! Мы подготовили д
Крупнейший университет искусственного интеллекта Приглашаем на бесплатный курс по искусственному интеллекту! Мы подготовили для тебя 5 занятий по теме «Разработка нейро-сотрудников на GPT». Пройди регистрацию для получения полного бесплатного доступа к курсу. ✨ 8 000+ студентов со всего мира ✨ 600+ AI-проектов, созданных студентами ✨ Сборная Университета — победители крупнейших AI-хакатонов России ✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие) ✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие) Будем рады видеть тебя в наших рядах! Узнать больше #реклама 16+ neural-university.ru О рекламодателе

Генераторы — один из самых полезных механизмов в Python. Они имеют множество применений, одно из которых — создание менеджеров контекста. Обычно нужно вручную определять магические методы __enter__ и __exit__, но декоратор @contextmanager из модуля contextlib делает это намного удобнее:

from contextlib import contextmanager

@contextmanager
def atomic():
    print('BEGIN')

    try:
        yield
    except Exception:
        print('ROLLBACK')
    else:
        print('COMMIT')
Теперь atomic — это менеджер контекста, который можно использовать следующим образом:

In : with atomic():
...:     print('ERROR')
...:     raise RuntimeError()
...:
BEGIN
ERROR
ROLLBACK
Кроме того, @contextmanager позволяет использовать его как декоратор, так и менеджер контекста.

In : @atomic()
...: def ok():
...:     print('OK')
...:
In : ok()
...:
BEGIN
OK
COMMIT
Мы в MAX 👉@BookPython

+9
Лучший курс по Python 0: Мета информация 1: int 2: + 3: Какой Python язык? 4: bool 5: None 6.0: float 6.1: float, интервью с Michael Overton 7: typeshed 7.1: typeshed, интервью с Alex Waygood источник Мы в MAX 👉@BookPython

Функция enumerate Эта встроенная функция снабжает циклы счётчиком. Возвращает генераторный объект, который имеет метод, вызываемый встроенной функцией next: на каждом проходе цикла возвращает кортеж {индекс, значение}. Цикл for проходит по этим кортежам автоматически, что позволяет распаковывать их значения с помощью присваивания кортежей почти так, как в zip.

S = "stroka"

example = enumerate(S)
next(example) # -> (0, 's')
Пример использования:

shopping_list = ['яблоки', 'бананы', 'апельсины', 'хлеб']

for index, item in enumerate(shopping_list, start=1):
    print(f"Пункт {index}: {item}")
Мы в MAX 👉@BookPython

ТГ-канал о том, как снова начать слышать себя Иногда внутри слишком много мыслей, а вокруг - слишком много чужих голосов. Хоч
ТГ-канал о том, как снова начать слышать себя Иногда внутри слишком много мыслей, а вокруг - слишком много чужих голосов. Хочется тишины, чтобы наконец услышать себя✨ В канале - спокойные тексты о том, как находить ясность, ощущать свои границы и идти по жизни из внутренней опоры⚡ Присоединяйся это пространство, где можно дышать свободно❤️ Узнать больше #реклама oncesee.ru О рекламодателе

Python предоставляет мощную библиотеку для работы с датой и временем: datetime. Интересный момент заключается в том, что объекты datetime имеют специальный интерфейс для поддержки часовых поясов (а именно атрибут tzinfo), но этот модуль поддерживает интерфейс лишь частично, оставляя остальную часть задачи другим модулям. Наиболее популярный модуль для этой задачи — pytz. Однако сложность в том, что pytz не полностью соответствует интерфейсу tzinfo. Документация pytz указывает на это одной из первых строк: «Эта библиотека отличается от документированного API Python для реализаций tzinfo». Нельзя использовать объекты часовых поясов pytz в качестве атрибута tzinfo. Если попытаться это сделать, можно получить абсолютно неожиданные результаты.

In : paris = pytz.timezone('Europe/Paris')
In : str(datetime(2017, 1, 1, tzinfo=paris))
Out: '2017-01-01 00:00:00+00:09'
Посмотрите на этот смещение +00:09. Правильное использование pytz выглядит следующим образом:

In : str(paris.localize(datetime(2017, 1, 1)))
Out: '2017-01-01 00:00:00+01:00'
Кроме того, после любых арифметических операций вам следует нормализовать объект datetime на случай изменения смещения (например, на границе периода летнего времени).

In : new_time = time + timedelta(days=2)
In : str(new_time)
Out: '2018-03-27 00:00:00+01:00'
In : str(paris.normalize(new_time))
Out: '2018-03-27 01:00:00+02:00'
Начиная с Python 3.6, рекомендуется использовать dateutil.tz вместо pytz. Он полностью совместим с tzinfo, может быть передан как атрибут, не требует нормализации, хотя работает немного медленнее. Мы в MAX 👉@BookPython

Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 На
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 Начните прямо сейчас ⚡ Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

Реализация парсеров с Pylasu В этой статье рассказывается, как реализовать парсеры на Python с использованием Pylasu и ANTLR.
Реализация парсеров с Pylasu В этой статье рассказывается, как реализовать парсеры на Python с использованием Pylasu и ANTLR. Пошагово: 1. Создадим грамматику ANTLR для простого языка программирования Slang и сгенерируем парсер. 2. Определим абстрактное синтаксическое дерево (AST) с помощью Pylasu и научимся строить его из дерева разбора ANTLR. 3. Интегрируем парсер с CLI-приложением для обработки кода Slang из строк и файлов, с выводом AST в формате JSON. Полный код проекта доступен на GitHub. Вы можете экспериментировать, вносить улучшения и делиться идеями! https://tomassetti.me/implement-parsers-with-pylasu/ Мы в MAX 👉@BookPython

Логика молока Молочные продукты, которые мы производим с любовью и заботой о вас! Подписаться и узнать о них больше. Подписат
Логика молока Молочные продукты, которые мы производим с любовью и заботой о вас! Подписаться и узнать о них больше. Подписаться #реклама О рекламодателе

Очередь с приоритетом — это структура данных, которая поддерживает две операции: добавление элемента и извлечение минимального из всех ранее добавленных элементов. Одной из самых распространённых реализаций очереди с приоритетом является бинарная куча. Это полное бинарное дерево со следующим свойством: ключ, хранящийся в каждом узле, меньше или равен (≤) ключам в дочерних узлах. Минимум всех элементов находится в корне такого дерева.




              1

      3               7

  5       4       9       8

15 16   17 18   19
В бинарной куче сложность операций вставки и извлечения составляет O(log n). Обычный способ хранения полного бинарного дерева в памяти — это массив, где дочерние элементы для x[i] находятся в x[2*i+1] и x[2*i+2].

[1, 3, 7, 5, 4, 9, 8, 15, 16, 17, 18, 19]
В Python нет бинарной кучи в виде класса, но предоставляется ряд функций, которые позволяют использовать список как бинарную кучу. Эти функции находятся в модуле heapq.

In [1]: from heapq import *
In [2]: heap = [3,2,1]
In [3]: heapify(heap)
In [4]: heap
Out[4]: [1, 2, 3]
In [5]: heappush(heap, 0)
In [6]: heap
Out[6]: [0, 1, 3, 2]
In [7]: heappop(heap)
Out[7]: 0
In [8]: heap
Out[8]: [1, 2, 3]
Мы в MAX 👉@BookPython

МТС приглашает всех, кто пишет на С++, Go, Python, JS, Java, C# и других языках, на True Tech Champ — всероссийский чемпионат
МТС приглашает всех, кто пишет на С++, Go, Python, JS, Java, C# и других языках, на True Tech Champ — всероссийский чемпионат по программированию. Соревнование будет проходить в двух треках. Трек 1. Алгоритмический. Индивидуальный зачет [призовой фонд 2 750 000 рублей] Реши задачи, которые помогут прокачаться в работе с алгоритмами и структурами данных. Похожие задания встречаются на собеседованиях в МТС и других крупных компаниях. До 240 лучших участников попадут в финал и сразятся в лайв-кодинге. Трек 2. Программирование роботов. Командный формат [призовой фонд 7 500 000 рублей] Проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы. 🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка. 📍 Зрелищный шоу-финал с ИИ-технологиями, кодерскими челленджами и выступлениями международных и российских спикеров пройдет 21 ноября в МТС Live Холл. Стоит участвовать, чтобы: — Освежить знания и прокачать новые навыки. — Заявить о себе на всю страну, получить карьерный буст и шанс лично пообщаться с HR-специалистами МТС. ⏰ Регистрация участников до 20 октября на сайте.

Если вы хотите перехватить как IndexError, так и KeyError, вы можете и должны использовать LookupError, их общего предка. Это оказалось полезным при доступе к сложным вложенным данным.

try:
    db_host = config['databases'][0]['hosts'][0]
except LookupError:
    db_host = 'localhost'
Мы в MAX 👉@BookPython

>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
Вы когда-нибудь задумывались, почему при попытке выйти из интерактивного Python с помощью простого exit или quit появляется это сообщение? Решение довольно неожиданное, но изящное. Это не специальный случай для интерактивной оболочки, она просто показывает представление каждого вычисленного результата, а эта строка - просто представление функции exit. Строго говоря, вы не должны использовать exit в своих повседневных проектах, поскольку она была создана специально для интерактивной оболочки. Вместо этого используйте sys.exit(). Мы в MAX 👉@BookPython

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе