ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Библиотека Python разработчика | Книги по питону

تُعد قناة Библиотека Python разработчика | Книги по питону (@bookpython) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 17 971 مشتركاً، محتلاً المرتبة 7 264 في فئة التكنولوجيات والتطبيقات والمرتبة 36 611 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 17 971 مشتركاً.

بحسب آخر البيانات بتاريخ 30 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -95، وفي آخر 24 ساعة بمقدار -1، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 5.36‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 2.75‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 963 مشاهدة. وخلال اليوم الأول يجمع عادةً 494 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل numbers, yield, модуль, none, декоратор.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq”

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 31 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

17 971
المشتركون
-124 ساعات
-287 أيام
-9530 أيام
أرشيف المشاركات
Реализация парсеров с Pylasu Введение В этой статье рассказывается, как реализовать парсеры на Python с использованием Pylasu
Реализация парсеров с Pylasu Введение В этой статье рассказывается, как реализовать парсеры на Python с использованием Pylasu и ANTLR. Пошагово: 1. Создадим грамматику ANTLR для простого языка программирования Slang и сгенерируем парсер. 2. Определим абстрактное синтаксическое дерево (AST) с помощью Pylasu и научимся строить его из дерева разбора ANTLR. 3. Интегрируем парсер с CLI-приложением для обработки кода Slang из строк и файлов, с выводом AST в формате JSON. Полный код проекта доступен на GitHub. Вы можете экспериментировать, вносить улучшения и делиться идеями! https://tomassetti.me/implement-parsers-with-pylasu/ 👉@BookPython

На любое «Есть проблема» отвечаешь: «Найдём решение»? Тогда стань бизнес-агентом, профессиональным ассистентом топ-менеджеров
На любое «Есть проблема» отвечаешь: «Найдём решение»? Тогда стань бизнес-агентом, профессиональным ассистентом топ-менеджеров СИБУРа! За два года работы прокачаешься так, что сможешь развиваться в любых направлениях компании. Тебе предстоит ответственная миссия: — решать неразрешимое (например, находить нужный контакт за пару часов!); — оптимизировать график руководителя; — погружаться в бизнес-задачи; — вести деловую переписку и управлять документооборотом. Уверены, ты справишься. Ведь для этого в СИБУРе есть масштабные ресурсы: — план карьерного развития под руководством настоящих профи; — соцпакет с ДМС и скидками от партнеров; — премии за эффективную работу; — абонементы на спорт и бесплатные тренировки. Убедись, что владеешь навыками бизнес-агента, и стань одной из нас! Узнать больше #реклама career.sibur.ru О рекламодателе

🏷 BLACK FRIDAY: −65% на профессию Python-разработчика! Время превратить мечту об IT-карьере в реальность по сумасшедшей цене! 🔥 На курсе от Академии «Синергия» вас ждёт: 👨‍💻 17 реальных проектов в портфолио 🛠 10+ ключевых технологий: Django, Flask, Linux, Docker 🌐 Продвинутые темы: асинхронное программирование 🎓 Эксперты из Avito, «Т-Банка» и «Яндекса» 💼 Гарантированное трудоустройство 🎁 Бонус: 5 дополнительных курсов в подарок: 🎨 Figma с 0 до Pro 📊 Excel 🎤 Ораторское искусство 🧠 Soft-skills и Hard-skills предпринимателя 🤖 Создание чат-бота ⚠️ Предложение действует 48 часов 🔥 Скидка 65% — такого больше не будет! Забронируйте место по лучшей цене: https://epic.st/imedU #python #blackfriday #IT_образование Реклама. Университет «Синергия» ИНН 7729152149 erid:2Vtzqwnkw4r

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




              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]
👉@BookPython

Генетический паспорт 7 999 ₽! Черная пятница в Genotek. Результаты теста расскажут о происхождении и здоровье Вас и Ваших будущих детей! Узнайте о предках, здоровье и Ваших возможностях в тесте - Генетический паспорт. Генетический паспорт включает в себя: - Происхождение 🏠 (этнический состав, поиск родственников, миграции предков, гены неандертальцев) - Риски заболеваний ⚡ - Питание - Спорт ⚽️ - Эффективность лекарств - Способности и характер 🎓 - Консультация с врачом ✅ Зарегистрируйтесь на сайте и составьте свое семейное древо бесплатно! Перейти на сайт Есть противопоказания. Посоветуйтесь с врачом. #реклама genotek.ru О рекламодателе

Популярный способ объявить абстрактный метод в Python — использовать исключение NotImplementedError:

def human_name(self):
    raise NotImplementedError
Хотя этот способ довольно популярен и даже поддерживается IDE (PyCharm считает такой метод абстрактным), у него есть недостаток. Ошибка возникает только при вызове метода, а не при создании экземпляра класса. Используйте abc, чтобы избежать этой проблемы:

from abc import ABCMeta, abstractmethod
class Service(metaclass=ABCMeta):
    @abstractmethod
    def human_name(self):
        pass
👉@BookPython

До 23% годовых по накопительному счету Откройте накопительный счет с высокой ставкой в Газпромбанке. Любая сумма и срок, пополнение и снятие - когда удобно, без потери начисленных процентов Узнать больше Финансовые услуги оказывает: Банк ГПБ (АО). #реклама gazprombank.ru О рекламодателе

Python 3 позволяет сделать некоторые аргументы функции обязательными именованными аргументами, что означает, что их нужно передавать как (arg=value), а не просто (value). Это может быть полезно, чтобы предотвратить вызовы функции вроде: grep(text, pattern, True, False, True), где True, False, True на самом деле означают: игнорировать регистр, не инвертировать совпадение, шаблон — регулярное выражение Perl. Было бы неплохо заставить использовать единственный разумный вид вызова:

grep(text, pattern,
    ignore_case=True,
    perl_regexp=True)
Чтобы достичь этого результата, следует разместить обязательные именованные аргументы после аргумента переменной длины (также известного как *args):

def grep(
    text, pattern, *args,
    ignore_case=False,
    invert_match=False,
    perl_regexp=False,
):
    pass
Если вам не нужен *args (как в примере), просто замените его на одиночную звездочку:

def grep(
    text, pattern, *,
    ignore_case=False,
    invert_match=False,
    perl_regexp=False,
):
    pass
👉@BookPython

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

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

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

Яндекс Музыка до конца года бесплатно! Подписка Яндекс Плюс для вас и 3-х близких до конца года бесплатно! Слушайте музыку и
Яндекс Музыка до конца года бесплатно! Подписка Яндекс Плюс для вас и 3-х близких до конца года бесплатно! Слушайте музыку и аудиокниги, смотрите фильмы, читайте книги без рекламы и ограничений. Попробуйте!👍 Попробовать #реклама 18+ plus.yandex.ru О рекламодателе

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

Ищете надежную СУБД? Присоединяйтесь к Data Platform V Телеграм-канал о СУБД и других продуктах для работы с данными в высоко
Ищете надежную СУБД? Присоединяйтесь к Data Platform V Телеграм-канал о СУБД и других продуктах для работы с данными в высоконагруженных системах. Рассказываем, как/какие продукты для работы с данными помогают бизнесу решать задачи быстрее и эффективнее. 4 причины, чтобы подписаться на канал: 1. Узнаете о 9 надежных решениях для работы с данными в условиях импортозамещения 2. Познакомитесь с реальными кейсами внедрения СУБД для бизнеса 3. Будете в курсе последних новостей и трендов рынка СУБД в России и мире 4. Получите приглашения на мероприятия с участием ведущих экспертов отрасли Подписаться #реклама О рекламодателе

Известный синтаксис декораторов в Python (@this_one) — это способ вызова функции высшего порядка. Раньше людям приходилось делать это вручную:

# prior to Python 2.4
def query():
    pass
query = atomic(query)

# now
@atomic
def query():
    pass
По сути, идентификатор после @ — это то, что будет вызвано. Можно также использовать идентификатор со скобками (@atomic(skip_errors=True)), что обычно используется для параметризированных декораторов. Также работает что-то вроде @decorators.db.atomic(True). Кажется, что любой вид выражения можно использовать в качестве декоратора, но это не так. После @ должен следовать один «дот-идентификатор» (например, decorators.atomic) и, при необходимости, одна пара скобок с аргументами (как вызов функции). Так что @decorators[2] использовать нельзя. Вот строка из грамматики Python:

decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
👉@BookPython

Скидка 15% на корпоративное такси. Яндекс Go для бизнеса Скидка 15% на первые три месяца. Возврат НДС до 20% на все рабочие п
Скидка 15% на корпоративное такси. Яндекс Go для бизнеса Скидка 15% на первые три месяца. Возврат НДС до 20% на все рабочие поездки. Контроль маршрутов и расходов в одном кабинете. Быстрая подача авто от 5 минут. Удобное онлайн-подключение без визита в офис. Узнать больше #реклама business.go.yandex О рекламодателе

Если dict запоминает порядок элементов в Python 3.6+, тогда зачем нужен collections.OrderedDict? А вот зачем:

>>> OrderedDict(a=1, b=2) == OrderedDict(b=2, a=1)
False
>>> dict(a=1, b=2) == dict(b=2, a=1)
True
👉@BookPython

🏁 Python разрабатывает API, как спорткар🏎 разгоняется до сотни — с FastAPI всё быстро, надёжно и элегантно 🏁 🛠 Если вам н
🏁 Python разрабатывает API, как спорткар🏎 разгоняется до сотни — с FastAPI всё быстро, надёжно и элегантно 🏁 🛠 Если вам нужны инструменты для создания веб-приложений, которые не тормозят, не тратят лишних ресурсов и готовы к продакшену — ждём вас 26 ноября в 20:00 мск на бесплатном открытом уроке, где мы разберём, как FastAPI переворачивает мир разработки API. Узнаете всё: от маршрутизации до работы с базами данных и асинхронного программирования. А еще покажем, как создать простое API буквально за пару минут. FastAPI — это не только скорость, но и простота в использовании. А для тех, кто хочет глубже нырнуть в разработку с Python, будет скидка на курс «Python Developer. Professional». 🔥Спикер Валентин Шилин — старший программист с опытом более 15 лет на С++, С#, JavaScript, Python, Scala, Java; аналитик данных; эксперт в обработке больших данных с помощью Scala/Spark и Hadoop Cloudera. 🔴 Зарегистрируйтесь прямо сейчас: https://vk.cc/cEBl3M Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

В Python 3 методы keys, values и items для словарей возвращают объекты-представления (view objects). В Python 2 они возвращали списки. Основное различие в том, что представления не хранят все элементы в памяти, а предоставляют их по мере запроса. Это работает отлично, пока вы просто итерируете ключи (что обычно и делается), но теперь вы не можете получить доступ к элементам по индексу.

TypeError: 'dict_keys' object does not support indexing
Можно утверждать, что индексация ключей не особо нужна, так как их порядок случайный, но это не совсем так. Во-первых, d.keys()[0] может быть удобным способом получить любой ключ (используйте next(iter(d.keys())) в Python 3). Во-вторых, начиная с Python 3.6, словари в CPython упорядочены по порядку добавления, и с версии Python 3.7 это стало стандартной особенностью языка. 👉@BookPython

Яндекс Заправки для бизнеса. Скидка до 3%. Без комиссий Управляйте заправками сотрудников с экономией на топливе. Возмещайте
Яндекс Заправки для бизнеса. Скидка до 3%. Без комиссий Управляйте заправками сотрудников с экономией на топливе. Возмещайте до 20% от стоимости топлива через возврат НДС. Получайте закрывающие документы в электронном виде. Еще удобнее с мобильным приложением. Узнать больше #реклама 16+ business.go.yandex О рекламодателе

Блок else для выражений for и try используется довольно редко. Однако, комбинируя их вместе, можно написать код, который выполняет итерацию по коллекции до первого успешного результата без использования дополнительных флагов.

import logging
from typing import List, Optional

logging.basicConfig(level=logging.DEBUG)

def first_int(iterable: List[str]) -> Optional[int]:
    for x in iterable:
        try:
            result = int(x)
        except ValueError:
            logging.debug('Bad int: %s', x)
        else:
            break
    else:
        result = None
        logging.error('No int found')

    return result

print(first_int(('a', 'b', '42', 'c')))
Вывод:

DEBUG:root:Bad int: a
DEBUG:root:Bad int: b
42
👉@BookPython