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 326 suscriptores, ocupando la posición 7 317 en la categoría Tecnologías y Aplicaciones y el puesto 36 872 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 326 suscriptores.

Según los últimos datos del 05 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.08%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 2.60% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 114 visualizaciones. En el primer día suele acumular 477 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 06 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 326
Suscriptores
-124 horas
-277 días
-8630 días
Archivo de publicaciones
Некоторым генераторам нужно возвращать все элементы другого генератора:

>>> def enclose(gen, before='{', after='}'):
...     yield before
...     for x in gen:
...         yield x
...     yield after
...
>>> list(enclose(range(5)))
['{', 0, 1, 2, 3, 4, '}']
Однако предпочтительнее использовать yield from:

>>> def enclose(gen, before='{', after='}'):
...     yield before
...     yield from gen
...     yield after
yield from не только работает быстрее, но и автоматически обрабатывает передачу значений во вложенные генераторы, возврат значений из генераторов и даже выброс исключений внутри вложенного генератора. 👉@BookPython

Старт продаж 10 новых домов в центре Москвы Скачайте каталог новостроек на старте продаж. Квартиры от 20 000 000 рублей. Пере
Старт продаж 10 новых домов в центре Москвы Скачайте каталог новостроек на старте продаж. Квартиры от 20 000 000 рублей. Перейти на сайт Проектная декларация на сайте https://наш.дом.рф/ #реклама 16+ new.whitewill.ru О рекламодателе

🚀 Открой для себя идеальный путь к лидерству с карьерным тестом от ОЭЗ «Алабуга»! 🌟 Мечтаете о карьере в крупной компании,
🚀 Открой для себя идеальный путь к лидерству с карьерным тестом от ОЭЗ «Алабуга»! 🌟 Мечтаете о карьере в крупной компании, где ваш потенциал раскроется на полную? Наш тест поможет вам определить вашу уникальную лидерскую роль. Может быть, именно вы станете тем лидером, который выведет команду на новый уровень? После прохождения теста вы можете заполнить заявку и получить приглашение на эксклюзивную лидерскую программу. Участие в программе открывает реальные перспективы трудоустройства в ОЭЗ «Алабуга», предоставляя шанс начать путь к профессиональному признанию. Сделайте первый шаг к своему будущему сегодня! Пройдите тест, подайте заявку и начните строить свою карьеру вместе с нами. 🎯

Наверное, самая распространённая ошибка новичков в Python — это использование изменяемого объекта в качестве значения по умолчанию для аргумента функции. Такой объект будет общим для всех вызовов функции, что может привести к неожиданным результатам:

def append_length(lst=[]):
    lst.append(len(lst))
    return lst

print(append_length([1, 2])) # [1, 2, 2]
print(append_length())       # [0]
print(append_length())       # [0, 1]
Однако в некоторых случаях, например при реализации кешей, такое поведение может быть полезным:

def fact(x, cache={0: 1}):
    if x not in cache:
        cache[x] = x * fact(x - 1)
    return cache[x]

print(fact(5))
В этом примере мы сохраняем вычисленные значения факториала внутри значения аргумента по умолчанию. Причём к этому значению даже можно обратиться напрямую:

>>> fact.__defaults__
({0: 1, 1: 1, 2: 2, 3: 6, 4: 24, 5: 120},)
👉@BookPython

В Python можно использовать любой объект в качестве ключа словаря, если он реализует метод __hash__. Этот метод может возвращать любое целое число, но есть одно обязательное условие: равные объекты должны иметь одинаковые хэши (обратное не обязательно). Также не стоит использовать изменяемые объекты в качестве ключей, потому что если объект изменится и станет не равным самому себе в прошлом, его больше нельзя будет найти в словаре. Есть и один странный момент, который может удивить во время отладки или написания unit-тестов:

class A:
    def __init__(self, x):
        self.x = x

    def __hash__(self):
        return self.x

hash(A(2))   # 2
hash(A(1))   # 1
hash(A(0))   # 0
hash(A(-1))  # внимание!
# -2
hash(A(-2))  # -2
В CPython значение -1 зарезервировано для внутренних ошибок, поэтому оно неявно преобразуется в -2. 👉@BookPython

🔍Тестовое собеседование на Middle Python-разработчика в четверг 22 мая(в четверг) в 19:00 по мск приходи онлайн на открытое
🔍Тестовое собеседование на Middle Python-разработчика в четверг 22 мая(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Собес проведет Вадим Пуштаев, ex. head of backend в 💙, автор канала @pythonetc, архитектор в европейской компании Как это будет: 📂 Вадим будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Вадим будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Вадиму Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwKtUmr

Модуль collections предоставляет класс ChainMap, который позволяет использовать несколько отображений (словарей) как одно объединённое:

from collections import ChainMap

d = ChainMap(dict(a=1), dict(a=2, b=2))
d['a']  # 1
d['b']  # 2
d['c']  # ...
# KeyError: 'c'
ChainMap последовательно просматривает все вложенные отображения и возвращает первое найденное значение. Однако все операции изменения затрагивают только первое отображение:

d = ChainMap(dict(a=1), dict(a=2, b=2))
d['c'] = 3
d
# ChainMap({'a': 1, 'c': 3}, {'a': 2, 'b': 2})
👉@BookPython

Регистрируйтесь на вебинар SIEM UserGate 💻Расскажет о том, как экосистема и SIEM UserGate помогает бороться с фишинговыми атаками в рамках демонстрации конкретного кейса. На вебинаре будет: - Вступительное слово - Экспертиза UserGate и сценарий конкретного кейса - Демонстрация кейса защиты от фишинговой атаки - Ответы на вопросы 👌Расскажем, как защитить вашу компанию. Регистрируйтесь — будет интересно! Зарегистрироваться #реклама 16+ webinar.usergate.com О рекламодателе

В Python сортировка по умолчанию является стабильной, то есть сохраняет порядок равных элементов:

a = [2, -1, 0, 1, -2]
sorted(a, key=lambda x: x**2)
# [0, -1, 1, 2, -2]
Функции max и min тоже стараются быть согласованными с поведением sorted. max работает аналогично sorted(a, reverse=True)[0], а min — как sorted(a)[0]. Это означает, что обе функции возвращают самый левый возможный результат:

max([2, -2], key=lambda x: x**2)
# 2

max([-2, 2], key=lambda x: x**2)
# -2

min([2, -2], key=lambda x: x**2)
# 2

min([-2, 2], key=lambda x: x**2)
# -2
👉@BookPython

Многие Python-классы начинаются с похожего шаблона: простой конструктор, тривиальный __repr__ и прочие подобные вещи:

class Server:
    def __init__(self, ip, version=4):
        self.ip = ip
        self._version = version

    def __repr__(self):
        return '{klass}("{ip!r}", {version!r})'.format(
            klass=type(self).__name__,
            ip=self.ip,
            version=self._version,
        )
Один из способов упростить такую рутину — использовать популярный пакет attrs, который автоматически генерирует множество стандартных методов на основе нескольких деклараций:

class Server:
    ip = attrib()
    _version = attrib(default=4)

server = Server(ip='192.168.0.0.1', version=4)
Этот подход не только создаёт конструктор (__init__) и представление (__repr__), но и полный набор методов сравнения (__eq__, __lt__ и т. д.). Кроме того, в Python 3.7 появилась стандартная альтернатива — data classes (датаклассы), которые решают ту же задачу (и даже больше). Они используют аннотации переменных — ещё одну относительно новую функцию Python. Вот пример:

@dataclass
class InventoryItem:
    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -> float:
        return self.unit_price * self.quantity_on_hand
Таким образом, dataclass тоже автоматически создаёт __init__, __repr__, методы сравнения и многое другое, основываясь лишь на аннотациях типов.

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

Есть три ситуации, в которых только что созданную переменную нельзя аннотировать типом: распаковка кортежей, циклы for и инструкции with. Все эти примеры некорректны:

name: str, age: int = student

for x: int in numbers: 
    ...

with connection() as conn: Connection:
    ...
Правильный способ указать тип таких переменных — объявить их заранее, без инициализации:

conn: Connection
with connection() as conn:
    ...
👉@BookPython

Раньше будет лучше! «Извините, у нас всё забронировано» — фраза, которую никто не хочет услышать при планировании отпуска. Ян
Раньше будет лучше! «Извините, у нас всё забронировано» — фраза, которую никто не хочет услышать при планировании отпуска. Яндекс Путешествия решили эту проблему и запустили акцию раннего бронирования на лето. Они собрали отели и квартиры со скидками и от себя добавили промокод ZARANEE20. Получилось максимально выгодно: до 40% экономии в месте, где вы действительно хотите отдохнуть, а не «там, где хоть что-то досталось». Забронировать #реклама 16+ special.travel.yandex.ru О рекламодателе

Каждая хорошо спроектированная консольная утилита должна принимать аргументы в виде опций (например, -h или --help), опций с параметрами (--log-level 2) или позиционных параметров (cp file1 file2). Опции отличаются от позиционных параметров тем, что начинаются с одного или двух дефисов. Проблемы возникают, когда позиционные аргументы тоже начинаются с дефиса — например, если нужно удалить файл с именем -rf: команда rm -rf в таком случае не работает как ожидается. Общепринятый способ решения этой проблемы — поддержка разделителя --. Аргументы, идущие после --, никогда не интерпретируются как опции:

$ echo test > -rf
$ cat -rf
cat: invalid option -- 'r'
Try 'cat --help' for more information.
$ cat -- -rf
test
$ rm -- -rf
$ cat -- -rf
cat: -rf: No such file or directory
Модуль argparse автоматически обрабатывает -- за тебя. 👉@BookPython

Яндекс Путешествия подготовили 17 поводов для поездок на все выходные вплоть до 31 августа. А с промокодом WEEKEND20 на скидк
Яндекс Путешествия подготовили 17 поводов для поездок на все выходные вплоть до 31 августа. А с промокодом WEEKEND20 на скидку до 20% путешествия станут ещё приятнее! Сохраняйте и делитесь с друзьями Получить скидку #реклама 16+ yatravel.go.link О рекламодателе

Некоторые модули могут содержать такие запутанные конструкции:

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

Яндекс Музыка ваша за ответ на 1 вопрос Яндекс Музыка, Книги и Кинопоиск в одной подписке для вас и 3-х ваших близких. Попроб
Яндекс Музыка ваша за ответ на 1 вопрос Яндекс Музыка, Книги и Кинопоиск в одной подписке для вас и 3-х ваших близких. Попробуйте бесплатно👍 Попробовать #реклама 18+ mrqz.me О рекламодателе Реклама на Яндексе

Если вы импортируете модуль, который уже был импортирован, ничего не произойдёт, так как Python отслеживает, какие модули уже были загружены. Все такие модули помещаются в словарь sys.modules:

In : import sys
In : 'sys' in sys.modules.keys()
Out: True
Если вам действительно нужно перезагрузить модуль, следует использовать функцию importlib.reload(m). Здесь m — это объект модуля, который был успешно импортирован ранее, а не строка с его именем:

In : import importlib
In : importlib.reload(importlib)
Out[5]: <module 'importlib' from '/home/bookpython/.ve/pythonetc/lib/python3.6/importlib/__init__.py'>
👉@BookPython

В Python имя переменной может состоять из одного символа подчёркивания: _. Хотя такие имена обычно недостаточно описательны и их не стоит использовать, существует по крайней мере три случая, когда _ имеет общепринятое значение. Во-первых, в интерактивных интерпретаторах Python _ используется для хранения результата последнего выполненного выражения:

>>> 2 + 2  
4  
>>> _  
4
Во-вторых, в документации модуля gettext рекомендуется создавать псевдоним для функции gettext() в виде _(), чтобы не загромождать код. В-третьих, _ используется, когда необходимо придумать имя для значения, которое не представляет интереса:

>>> log_entry = '10:50:24 14234 GET /api/v1/test'  
>>> time, _, method, location = log_entry.split()
👉@BookPython

Как ИИ-ассистенты помогают каждый день ИИ-ассистенты - кто они и как помогают с рабочими задачами? 💻Что может сделать цифров
Как ИИ-ассистенты помогают каждый день ИИ-ассистенты - кто они и как помогают с рабочими задачами? 💻Что может сделать цифровой помошник: ✅Сбор новостных данных и их публикация ✅Написание постов, которые звучат как я ✅Продажа продуктов на автопилоте ✅Консультирование команды Много полезного из мира ИИ в телеграм-канале. Подписывайся! Узнать больше #реклама О рекламодателе