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 329 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 329 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 329
Suscriptores
-124 horas
-297 días
-8630 días
Archivo de publicaciones
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 На
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 Начните прямо сейчас ⚡ Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

Что такое Pickling и Unpickling? В Python pickling и unpickling — это процессы сериализации и десериализации объектов, соотве
Что такое Pickling и Unpickling? В Python pickling и unpickling — это процессы сериализации и десериализации объектов, соответственно, с использованием модуля pickle. - Pickling — это процесс преобразования объекта Python (например, словаря, списка, класса и т.д.) в байтовую последовательность (или поток байтов), которая может быть сохранена в файл или передана по сети. Этот процесс позволяет сохранить состояние объекта для дальнейшего использования. - Unpickling — это обратный процесс, при котором байтовая последовательность преобразуется обратно в объект Python. Пример использования: 1. Pickling (сериализация):

import pickle

# Создаем объект
data = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# Сохраняем объект в файл
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)
2. Unpickling (десериализация):

import pickle

# Читаем объект из файла
with open('data.pickle', 'rb') as f:
    loaded_data = pickle.load(f)

print(loaded_data)
Когда это может быть полезно? - Сохранение промежуточных данных в файл для повторного использования. - Передача сложных объектов между разными программами или системами. - Сохранение состояния приложения. Однако, нужно быть осторожным с unpickling, так как загрузка непроверенных данных может привести к выполнению вредоносного кода. Мы в MAX 👉@BookPython

Когда вы пишете собственный метод __repr__ для какого-то объекта, обычно нужно включать представление его атрибутов. Для этого при форматировании следует вызывать repr() для объектов, так как по умолчанию вызывается str(). Это делается с помощью нотации !r:

class Pair:
    def __init__(self, left, right):
        self.left = left
        self.right = right
        
    def __repr__(self):
        class_name = type(self).__name__
        return f'{class_name}({self.left!r}, {self.right!r})'
Мы в MAX 👉@BookPython

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

Модуль functools для манипуляций с функциями Модуль functools в Python предоставляет инструменты для работы с функциями, позволяя выполнять различные манипуляции с ними. Вот некоторые из наиболее важных функций и возможностей, которые предоставляет functools: 1. functools.partial: Позволяет зафиксировать некоторые аргументы функции и создать новую функцию с предопределенными значениями.

   from functools import partial

   def multiply(x, y):
       return x * y

   double = partial(multiply, 2)
   print(double(5))  # Вывод: 10
   
2. functools.reduce: Применяет функцию к паре элементов в последовательности, сокращая ее до одного значения. Обычно используется для аккумуляции значений.

   from functools import reduce

   numbers = [1, 2, 3, 4]
   product = reduce(lambda x, y: x * y, numbers)
   print(product)  # Вывод: 24
   
3. functools.lru_cache: Кэширует результаты вызовов функции, чтобы ускорить повторные вызовы с теми же аргументами. Полезно для функций с дорогими вычислениями.

   from functools import lru_cache

   @lru_cache(maxsize=None)
   def fibonacci(n):
       if n < 2:
           return n
       return fibonacci(n - 1) + fibonacci(n - 2)

   print(fibonacci(10))  # Вывод: 55
   
4. functools.wraps: Декоратор, который сохраняет метаданные оригинальной функции (такие как имя и документация) при создании декоратора.

   from functools import wraps

   def my_decorator(func):
       @wraps(func)
       def wrapper(*args, **kwargs):
           print("Что-то делаем перед вызовом функции")
           return func(*args, **kwargs)
       return wrapper

   @my_decorator
   def say_hello():
       """Выводит приветствие."""
       print("Привет!")

   print(say_hello.__name__)  # Вывод: say_hello
   print(say_hello.__doc__)   # Вывод: Выводит приветствие.
   
5. functools.total_ordering: Упрощает реализацию всех методов сравнения для класса, определяя только несколько из них.

   from functools import total_ordering

   @total_ordering
   class Point:
       def __init__(self, x, y):
           self.x = x
           self.y = y

       def __eq__(self, other):
           return (self.x, self.y) == (other.x, other.y)

       def __lt__(self, other):
           return (self.x, self.y) < (other.x, other.y)

   p1 = Point(1, 2)
   p2 = Point(3, 4)
   print(p1 < p2)  # Вывод: True
   print(p1 <= p2)  # Вывод: True
   
Эти функции и декораторы делают functools мощным инструментом для функционального программирования в Python. Мы в MAX 👉@BookPython

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

Генератор можно остановить. Ты можешь явно вызвать g.close(), но обычно это делает сборщик мусора. Когда вызывается close, в точке, где выполнение генератора было приостановлено, выбрасывается исключение GeneratorExit:

def gen():
    try:
        yield 1
        yield 2
    finally:
        print('END')


g = gen()
print(next(g))  # выведет '1'
g.close()       # выведет 'END'
Обрати внимание на три момента: 1. Нельзя использовать yield при обработке GeneratorExit Если в блоке finally попытаться сделать yield, возникнет ошибка RuntimeError:

def gen():
    try:
        yield 1
    finally:
        yield 3  # ошибка!


g = gen()
next(g)
g.close()  # RuntimeError
2. Исключение не выбрасывается, если генератор ещё не запускался В этом случае генератор просто переходит в состояние остановлен, но finally не выполняется:

def gen():
    try:
        yield 1
    finally:
        print('END')


g = gen()
g.close()         # ничего не выводит
print(list(g))    # выведет '[]'
3. close() ничего не делает, если генератор уже завершён Если генератор полностью отработал, close() не вызывает finally повторно и просто игнорируется:

def gen():
    try:
        yield 1
        yield 2
    finally:
        print('END')


g = gen()
print(list(g))     # ['1', '2']
print('Closing now')
g.close()

# Вывод:
# END
# [1, 2]
# Closing now
👉@BookPython

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

Стандартный модуль json имеет интерфейс командной строки, который может быть полезен для форматирования JSON с помощью одного только Python. Этот модуль называется json.tool и используется следующим образом:

$ echo '{"a": [], "b": "c"}' | python -m json.tool
{
    "a": [],
    "b": "c"
}
👉@BookPython

Продвижение в Telegram с помощью Яндекс Директа ⚡Запустите продвижение в телеграм-каналах и привлекайте целевую аудиторию 📱
+3
Продвижение в Telegram с помощью Яндекс Директа ⚡Запустите продвижение в телеграм-каналах и привлекайте целевую аудиторию 📱 Таргетинг по тематикам, регионам и каналам в Telegram Попробовать #реклама yandex.ru О рекламодателе

Вы можете передавать аргументы в пользовательский метакласс прямо из определения класса. Синтаксис класса поддерживает именованные аргументы:

class Klass(Parent, arg='arg')
Ключевое слово metaclass зарезервировано для указания метакласса, но остальные аргументы можно использовать свободно. Ниже приведён пример метакласса, который создаёт класс без одного из атрибутов. Имя атрибута, который нужно удалить, передаётся через аргумент remove:

class FilterMeta(type):
    def __new__(mcs, name, bases, namespace, remove=None, **kwargs):
        if remove is not None and remove in namespace:
            del namespace[remove]

        return super().__new__(mcs, name, bases, namespace)


class A(metaclass=FilterMeta, remove='half'):
    def half(x):
        return x // 2

    half_of_4 = half(4)
    half_of_100 = half(100)


a = A()
print(a.half_of_4)    # 2
print(a.half_of_100)  # 50
a.half                 # AttributeError
В этом примере метод half удаляется из класса A во время его создания, поэтому попытка обратиться к a.half вызывает AttributeError. 👉@BookPython

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

      3               7

  5       4       9       8

15 16   17 18   19
В бинарной куче операции вставки и извлечения минимального элемента выполняются за O(log n). Хранение бинарной кучи в памяти Полное бинарное дерево обычно хранится в массиве, где: * левый потомок элемента x[i] находится по индексу 2*i + 1, * правый потомок - по индексу 2*i + 2. Пример массива для дерева выше:
[1, 3, 7, 5, 4, 9, 8, 15, 16, 17, 18, 19]
Работа с кучей в Python В Python нет отдельного класса для бинарной кучи, но модуль heapq предоставляет функции, которые позволяют использовать обычный список как бинарную кучу. Пример использования:

from heapq import *

# Создаём список
heap = [3, 2, 1]

# Преобразуем список в кучу
heapify(heap)
print(heap)  # [1, 2, 3]

# Добавляем элемент в кучу
heappush(heap, 0)
print(heap)  # [0, 1, 3, 2]

# Извлекаем минимальный элемент
print(heappop(heap))  # 0

# Куча после извлечения
print(heap)  # [1, 2, 3]
👉@BookPython

Канал психолога с эффективными практиками и советами Другие психологи берут за это деньги! 💰 Telegram-канал с бесплатными со
Канал психолога с эффективными практиками и советами Другие психологи берут за это деньги! 💰 Telegram-канал с бесплатными советами от профессионального психолога. Подписаться #реклама О рекламодателе

Программируешь на Python? Попробуй оживить робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Te
Программируешь на Python? Попробуй оживить робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Tech Champ 2025. True Tech Champ 2025 — это третий всероссийский чемпионат по программированию от МТС с онлайн-этапами отбора и грандиозным шоу-финалом в Москве. Тебя ждут два трека — выбирай: I. Алгоритмический [призовой фонд 2 750 000 рублей]. Если классический олимпиадный формат — твоя стихия, этот трек для тебя. Блесни математическими навыками, покажи скилы в работе со структурами данных и написании алгоритмов — и окажись выше соперников в турнирной таблице. II. Программирование роботов [призовой фонд 7 500 000 рублей]. Запрограммируй робота на скоростное прохождение лабиринта в симуляторе и пройди в финал. На финале участники встретятся офлайн и сразятся на четырех уровнях с полосой препятствий, вспышками света, лазерами и другими препятствиями. Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только. Подробности на сайте. Регистрация открыта до 20 октября.

Все объекты в Python создаются с помощью вызова метода __new__. Даже если вы определяете свой собственный __new__ для класса, вы должны вызвать super().__new__(...). Можно подумать, что object.__new__ — это базовая реализация, отвечающая за создание всех объектов. Но это не совсем так. Существует несколько таких реализаций, и они несовместимы. Например, у dict есть собственная низкоуровневая реализация __new__, и объекты типов, унаследованных от dict, нельзя создать с помощью object.__new__:

In : class D(dict):
...:     pass
...:

In : class A:
...:     pass
...:

In : object.__new__(A)
Out: <__main__.A at 0x7f200c8902e8>

In : object.__new__(D)
...
TypeError: object.__new__(D) is not safe,
use D.__new__()
👉@BookPython

Старт продаж премиальных апартаментов Skysoul в Крыму Премиальный комплекс в 30 метрах от собственного пляжа ✅ Комплекс — 4-х
+4
Старт продаж премиальных апартаментов Skysoul в Крыму Премиальный комплекс в 30 метрах от собственного пляжа ✅ Комплекс — 4-х кратный победитель премии в сфере недвижимости URBAN AWORDS как самый привлекательный инвестиционный проект ЮФО 🏠 Комплекс можно: - Сдавать посуточно через отельера международного класса и получать пассивный ежемесячный доход (при этом отдыхая в отпуске в собственном номере) - Выгодно перепродать ⚡ О проекте: - Первая береговая линия – всего в 30 метрах расположен собственный пляж - На территории открытый и 2 круглогодичных бассейна - Более 14,5 га впечатляющей территории: 4-этажный SPA-комплекс, амфитеатр, панорамный ресторан, медцентр, игровое пространство для детей, магазины и бутик ⚡Роскошные панорамные виды на потухший вулкан, море и виноградники ✅Получите цены и презентацию первыми: Перейти на сайт Проектная декларация на сайте https://наш.дом.рф/. #реклама mrqz.me О рекламодателе

Python позволяет перегружать многие разные операторы, и оператор сдвига — один из них. Вот пример того, как можно создать композицию функций с использованием этого оператора. Здесь символы, похожие на стрелки, показывают направление потока данных:

from collections import deque
from math import sqrt


class Compose:
    def __init__(self):
        self._functions = deque()

    def __call__(self, *args, **kwargs):
        result = None
        for f in self._functions:
            result = f(*args, **kwargs)
            args = [result]
            kwargs = dict()
        return result

    def __rshift__(self, f):
        self._functions.append(f)
        return self

    def __lshift__(self, f):
        self._functions.appendleft(f)
        return self


compose = Compose


sqrt_abs = (compose() << sqrt << abs)
sqrt_abs2 = (compose() >> abs >> sqrt)

print(sqrt_abs(-4))   # 2.0
print(sqrt_abs2(-4))  # 2.0
Объяснение: << — добавляет функцию в начало цепочки (выполняется первой). >> — добавляет функцию в конец цепочки (выполняется последней). В примере sqrt_abs(-4) сначала берёт abs(-4) → 4, а затем sqrt(4) → 2.0. sqrt_abs2(-4) делает то же самое, но функции добавлены в другом порядке. 👉@BookPython

Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Кни
Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попробуйте бесплатно❤️ Попробовать #реклама 18+ music.yandex.ru О рекламодателе Реклама на Яндексе

Класс объекта доступен через атрибут __class__:

>>> [1, 2].__class__
<class 'list'>
Однако более привычный способ получить класс — использовать функцию type. Кроме того, это единственный способ, который работает со старыми стилями классов.

>>> type([1, 2])
<class 'list'>
Если вы хотите проверить, является ли объект экземпляром заданного класса, следует использовать isinstance, а не сравнение:

>>> class A:
...     pass
...
>>> class B(A):
...     pass
...
>>> type(B())
<class '__main__.B'>
>>> isinstance(B(), A)
True
👉@BookPython

Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Кни
Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попробуйте бесплатно❤️ Попробовать #реклама 18+ music.yandex.ru О рекламодателе Реклама на Яндексе