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

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

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram Библиотека Python разработчика | Книги по питону

El canal Библиотека Python разработчика | Книги по питону (@bookpython) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 18 328 suscriptores, ocupando la posición 7 307 en la categoría Tecnologías y Aplicaciones y el puesto 36 869 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 18 328 suscriptores.

Según los últimos datos del 04 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -86, y en las últimas 24 horas de -1, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.07%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 2.61% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 112 visualizaciones. En el primer día suele acumular 479 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 2.
  • Intereses temáticos: El contenido se centra en temas clave como numbers, yield, модуль, none, декоратор.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 05 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

18 328
Suscriptores
-124 horas
-297 días
-8630 días
Archivo de publicaciones
Некоторые модули могут содержать такие загадочные конструкции:

try:
    cache
except NameError:
    cache = {}
На первый взгляд, нет смысла писать что-то подобное. Переменная cache однозначно вызовет NameError в начале выполнения модуля, так как она ещё не была определена. Однако ситуация меняется, если модуль перезагружается. В этом случае словарь, содержащий все атрибуты модуля, переиспользуется, что даёт возможность модулю сохранить значения из предыдущей версии. Если модуль изначально спроектирован с учётом перезагрузки, он может использовать эту особенность. Например, приведённый выше код позволяет сохранить кэш между перезагрузками модуля. 👉@BookPython

В Python числа с плавающей точкой могут иметь значение NaN. Его можно получить с помощью math.nan. NaN не равен ничему, включая самого себя:

>>> math.nan == math.nan
False
Кроме того, объект NaN не является уникальным — можно получить несколько разных объектов NaN из разных источников:

>>> float('nan')
nan
>>> float('nan') is float('nan')
False
Это означает, что обычно нельзя использовать NaN в качестве ключа словаря:

>>> d = {}
>>> d[float('nan')] = 1
>>> d[float('nan')] = 2
>>> d
{nan: 1, nan: 2}
👉@BookPython

Телеграм-канал Олега Гадецкого о самопознании 👌Можно ли быть психологом для самого себя? ✨Как настроить себя на позитивную в
+1
Телеграм-канал Олега Гадецкого о самопознании 👌Можно ли быть психологом для самого себя? ✨Как настроить себя на позитивную волну? 📚Как не откладывать дела на "потом"? Ответы на эти и другие вопросы читайте в блоге! Узнать больше #реклама О рекламодателе

В Python None равен None, поэтому может показаться, что проверку на None можно делать через ==:

ES_TAILS = ('s', 'x', 'z', 'ch', 'sh')

def make_plural(word, exceptions=None):
    if exceptions == None:  # ← ← ←
        exceptions = {}

    if word in exceptions:
        return exceptions[word]
    elif any(word.endswith(t) for t in ES_TAILS):
        return word + 'es'
    elif word.endswith('y'):
        return word[0:-1] + 'ies'
    else:
        return word + 's'

exceptions = dict(
    mouse='mice',
)

print(make_plural('python'))
print(make_plural('bash'))
print(make_plural('ruby'))
print(make_plural('mouse', exceptions=exceptions))
Однако так делать неправильно. Действительно, None равен None, но не только он может быть равен None. Пользовательские объекты тоже могут вернуть True при сравнении с None через ==:

class A:
    def __eq__(self, other):
        return True

print(A() == None)  # True
print(A() is None)  # False
Правильный способ проверки на None — использовать is None. 👉@BookPython

Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие п
Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать? Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи. Из методички узнаете: - Как создать постоянную ссылку и подключаться на встречи в 2 клика, - Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных. - Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту. Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч. Получить гайд можно бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

В Python разные структуры данных объединяются разными способами. Списки используют оператор +:

>>> [1, 2] + [2, 3]
[1, 2, 2, 3]
Кортежи и строки также используют +:

>>> (1, 2) + (2, 3)
(1, 2, 2, 3)

>>> "12" + "23"
'1223'
Deque (двусторонняя очередь) тоже поддерживает +:

>>> deque([1, 2]) + deque([2, 3])
deque([1, 2, 2, 3])
Множества объединяются с помощью оператора |:

>>> {1, 2} | {2, 3}
{1, 2, 3}
Словари объединяются по-другому, и порядок важен, если ключи пересекаются:

>>> {**dict(a=1, b=2), **dict(b=3, c=4)}
{'a': 1, 'b': 3, 'c': 4}

>>> {**dict(b=3, c=4), **dict(a=1, b=2)}
{'b': 2, 'c': 4, 'a': 1}
Counter (счётчик) можно сложить с помощью +, при этом значения суммируются:

>>> Counter(dict(a=1, b=2)) + Counter(dict(b=3, c=4))
Counter({'b': 5, 'c': 4, 'a': 1})
👉@BookPython

Loro Piana: мужские кожаные и замшевые куртки ⚡ Онлайн-магазин мужской брендовой одежды, обуви и аксессуаров по самым выгодным ценам! ✅ Тысячи моделей от топовых брендов, премиум качество, новинки каждый день! Tommy Hilfiger Burberry Emporio Armani 7 Moncler Dolce & Gabbana Hugo Boss Polo Ralph Lauren Hermes Brunello Cucinelli и др. 🚗 Доставка с примеркой по Москве, быстрая доставка по всей России и СНГ. 💰 Скидки до -80% в нашем дисконт Telegram-канале. ❤️ Твой новый стиль всего в одном клике. Переходи! Подписаться #реклама О рекламодателе

🚀 Подборка Telegram каналов для программистов Системное администрирование, DevOps 📌 https://t.me/bash_srv Bash Советы https://t.me/win_sysadmin Системный Администратор Windows https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С https://t.me/DevLab1C 1С:Предприятие 8 https://t.me/razrab_1C 1C Разработчик https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт https://t.me/rabota1C_rus Вакансии для программистов 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Big Data, Machine Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста https://t.me/lifeproger Жизнь программиста. Авторский канал. QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_2 Хакер Free Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике https://t.me/matgeoru Математика | Геометрия | Логика Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

У Python очень короткий список встроенных констант. Одна из них - Ellipsis, которую также можно записать как .... Эта константа не имеет особого значения для интерпретатора, но используется в тех местах, где подобный синтаксис уместен. numpy поддерживает Ellipsis как аргумент для __getitem__. Например, x[...] возвращает все элементы массива x. PEP 484 задаёт дополнительный смысл: Callable[..., type] — способ определить тип вызываемых объектов без указания типов аргументов. Наконец, ... можно использовать, чтобы показать, что функция ещё не реализована. Это полностью корректный Python-код:

def x():
    ...
👉@BookPython

Сочи, 2-ух комнатная, ремонт, вид на море, ипотека от 3% Мечтаете о квартире у моря, но цены и необходимость делать ремонт пугают💰? Да, выбор и ремонт требует времени и денег . Но не отказывайтесь от мечты! В ЖК Фестивальный готовые квартиры с ремонтом, скидкой до 20% и ипотекой от 3%😊. ✨ Из окон видно море, до которого всего 10 минут, на территории школа, сад, магазины и даже бассейн 👍! ✅ Оставь телефон чтобы узнать цену! Узнать цену Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Финансовые услуги оказывает: ПАО Сбербанк. #реклама festivalniy.estatesochi.com О рекламодателе

Функции, объявленные в теле класса, не видят область видимости класса. Это логично, так как область видимости класса существует только во время создания класса.

>>> class A:
...     x = 2
...     def f():
...         print(x)
...     f()
...
[...]
NameError: name 'x' is not defined
Обычно это не проблема: методы объявляются внутри класса только для того, чтобы стать методами и вызываться позже:

>>> class A:
...     x = 2
...     def f(self):
...         print(self.x)
...
>>> A().f()
2
Что немного неожиданно — то же самое верно и для генераторов и списковых включений (comprehensions). Они имеют свою собственную область видимости и не могут обращаться к области видимости класса. Это особенно логично для генераторов, так как они выполняются уже после того, как создание класса завершено.

>>> class A:
...     x = 2
...     y = [x for _ in range(5)]
...
[...]
NameError: name 'x' is not defined
Comprehensions при этом не имеют доступа к self. Единственный способ заставить это работать - добавить ещё один уровень области видимости, например, через lambda (да, это выглядит не слишком красиво):

>>> class A:
...     x = 2
...     y = (lambda x=x: [x for _ in range(5)])()
...
>>> A.y
[2, 2, 2, 2, 2]
👉@BookPython

Словари, которые используются для хранения атрибутов объектов, не такие же, как те, что вы создаёте с помощью dict, хотя выглядят они абсолютно одинаково:

>>> from sys import getsizeof
>>> class A:
...     pass
... 
>>> a = dict()
>>> b = A().__dict__
>>> type(a)
<class 'dict'>
>>> type(b)
<class 'dict'>
>>> a
{}
>>> b
{}
>>> getsizeof(a)
240
>>> getsizeof(b)
112
Чтобы уменьшить потребление памяти, словари для __dict__ реализованы иначе. Они разделяют ключи между всеми экземплярами класса A. Однако важно понимать, что b на самом деле не меньше, чем a, - это просто особенность работы getsizeof. 👉@BookPython

Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие п
Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать? Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи. Из методички узнаете: - Как создать постоянную ссылку и подключаться на встречи в 2 клика, - Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных. - Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту. Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч. Получить гайд можно бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

Проблема при вызове repr для других объектов внутри собственного метода __repr__ заключается в том, что нельзя гарантировать, что ни один из этих объектов не равен self, и вызов не окажется рекурсивным:

In : p = Pair(1, 2)
In : p
Out: Pair(1, 2)
In : p.right = p
In : p
Out: [...]
RecursionError: maximum recursion depth exceeded while calling a Python object
Чтобы легко решить эту проблему, можно использовать декоратор reprlib.recursive_repr:

@reprlib.recursive_repr()
def __repr__(self):
    class_name = type(self).__name__
    return f'{class_name}({self.left!r}, {self.right!r})'
Теперь всё работает корректно:

In : p = Pair(1, 2)
In : p.right = p
In : p
Out: Pair(1, ...)
👉@BookPython

Москва? Питер? Тула? Бизнес рядом В Нетворк от Точка Банк предприниматели всей страны обмениваются опытом, помогают друг друг
Москва? Питер? Тула? Бизнес рядом В Нетворк от Точка Банк предприниматели всей страны обмениваются опытом, помогают друг другу и становятся бизнес-партнёрами. Регистрируйтесь в Нетворк от Точка Банк, включайте мэтчинг и находите своих в нужном городе. Зарегистрироваться #реклама О рекламодателе

Если вы хотите измерить время между двумя событиями, следует использовать time.monotonic() вместо time.time(). time.monotonic() никогда не идёт назад, даже если системные часы были изменены:

from contextlib import contextmanager
import time


@contextmanager
def timeit():
    start = time.monotonic()
    yield
    print(time.monotonic() - start)

def main():
    with timeit():
        time.sleep(2)

main()
👉@BookPython

Откройте счет для бизнеса онлайн за 0 ₽ ✅Бесплатное обслуживание до 2 месяцев ✅До 500 000 ₽ бонусами на сервисы для бизнеса ✅
Откройте счет для бизнеса онлайн за 0 ₽ ✅Бесплатное обслуживание до 2 месяцев ✅До 500 000 ₽ бонусами на сервисы для бизнеса ✅Овердрафт до 1 000 000 ₽ ✅Прозрачные тарифы ✅Удобное приложение Для начинающих предпринимателей, малого, среднего и крупного бизнеса Подать заявку Финансовые услуги оказывает: АО "ТБанк" . #реклама tbank.ru О рекламодателе

Декоратор создаёт новый объект (обычно функцию), используя в качестве аргумента другую единственную функцию. Однако иногда хочется задать больше, чем одну функцию. Сделать это напрямую невозможно из-за ограничений синтаксиса Python, но можно использовать небольшой трюк. Возвращаемая функция может содержать ещё один декоратор, который можно повторно применить к дополнительным функциям, добавляя новое поведение. Примерно так работает @property:

@property
def x(self):
    return self._x

@x.setter
def x(self, value):
    self._x = value
Ниже приведён пример того, как можно определить функцию, которая использует дополнительные функции для особых случаев:

from functools import wraps

def make_case_decorator(func):
    def case_decorator(*case_decorator_args):
        def decorator(special_case_func):
            @wraps(func)
            def decorated(*args):
                if case_decorator_args == args:
                    return special_case_func(*args)
                return func(*args)

            decorated.case = make_case_decorator(decorated)

            return decorated

        return decorator

    return case_decorator


def special_cases(func):
    @wraps(func)
    def decorated(*args):
        return func(*args)

    decorated.case = make_case_decorator(decorated)

    return decorated


@special_cases
def fact(x):
    return x * fact(x - 1)

@fact.case(0)
def fact(x):
    return 1

@fact.case(10)
def fact(x):
    print(f'(сработала оптимизация для {x})')
    return 3628800
👉@BookPython

Ты не можешь изменять переменные замыкания простым присваиванием. Python рассматривает присваивание как определение локальной переменной внутри тела функции и вообще не делает замыкания. Работает нормально, печатает 2:

def make_closure(x):
    def closure():
        print(x)

    return closure

make_closure(2)()
Вызывает UnboundLocalError: local variable 'x' referenced before assignment:

def make_closure(x):
    def closure():
        print(x)
        x *= 2
        print(x)

    return closure

make_closure(2)()
Чтобы это заработало, нужно использовать nonlocal. Оно явно сообщает интерпретатору, что присваивание не создает новую локальную переменную, а работает с переменной из замыкания:

def make_closure(x):
    def closure():
        nonlocal x
        print(x)
        x *= 2
        print(x)

    return closure

make_closure(2)()
👉@BookPython

X-Border - доставка оригинальных товаров из США Оригинальные бренды Gucci, Louis Vuitton, Michael Kors, New Balance, Nike, Adidas, Dickies, Versace и многие другие из США с доставкой по всей России! 💰 Экономьте до 80% на покупках в США. Как это работает? ✅ Присылайте ссылку на любой товар из любого магазина в США в наш telegram-бот; ✅ Мы расчитываем стоимость товара + стоимость доставки в РФ; ✅ Вы оплачиваете удобным для вас способом и ожидаете свой заказ – срок доставки от 14 дней! Мы контролируем заказ на каждом этапе доставк и информируем вас о его статусе на каждом этапе. Никаких лишних забот - мы всё сделаем за вас. Подписывайтесь на наш канал📱 t.me/+dB_LFM4GkXA3NTRi и покупайте оригинальную одежду, обувь, аксессуары и многое другое с удовольствием! Узнать больше #реклама О рекламодателе