fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Python Community

Python Community

رفتن به کانال در Telegram

Python Community RU - СНГ сообщество Python-разработчиков Чат канала: @python_community_chat Сотрудничество: @cyberJohnny и @Sergey_bzd РКН реестр: https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed®istryType=bloggersPermission

نمایش بیشتر

📈 تحلیل کانال تلگرام Python Community

کانال Python Community (@python_community_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 514 مشترک است و جایگاه 10 789 را در دسته فناوری و برنامه‌ها و رتبه 55 649 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 514 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -80 و در ۲۴ ساعت گذشته برابر -1 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 4.44% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 2.27% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 511 بازدید دریافت می‌کند. در اولین روز معمولاً 261 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 2 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند docker, git, github, контейнер, await تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Python Community RU - СНГ сообщество Python-разработчиков Чат канала: @python_community_chat Сотрудничество: @cyberJohnny и @Sergey_bzd РКН реестр: https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

11 514
مشترکین
-124 ساعت
-287 روز
-8030 روز
آرشیو پست ها
\n\nФункция html() может вернуть не просто строку, а полноценный HTMLElement. Больше никакой \"грязи\" — всё чисто и типобезопасно.\n\n🔍 Работа с шаблоном\nt-строки позволяют получить доступ к содержимому:\n\ntemplate = t\"Hello {name}!\"\ntemplate.strings # (\"Hello \", \"!\")\ntemplate.values # (name,)\ntemplate.interpolations[0].format_spec # \">8\"\n\nМожно также вручную собрать шаблон:\n\nTemplate(\"Hello \", Interpolation(value=\"World\", expression=\"name\"), \"!\")\n\n🚀 Вывод:\nt\"...\" — шаг к безопасным шаблонам и типизации строк в Python. Готовься к будущему Python — безопасному по умолчанию.\n\n📌 Подробнее здесь (https://davepeck.org/2025/04/11/pythons-new-t-strings/)\n\n@Python_Community_ru","datePublished":"2025-04-23T11:09:04Z","dateModified":"2025-04-23T11:09:04Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":753},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":11}]}},{"@type":"ListItem","position":4,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2575","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2575","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2575","headline":"‍🖥 ex — это инструмент для создания единого исполняемого файла .pex, который содержит всю вашу программу на P…","articleBody":"‍🖥 ex — это инструмент для создания единого исполняемого файла .pex, который содержит всю вашу программу на Python и её зависимости. Это самодостаточная и переносимая среда выполнения, аналогичная virtualenv, но упакованная в один файл.\n\nЗачем это нужно?\n\nПростота развертывания: чтобы установить и запустить приложение, достаточно скопировать файл app.pex и запустить его — никакой дополнительной настройки.\n\nПортируемость: один файл может включать сборки для разных платформ (Linux, macOS).\n\nИзоляция зависимостей: все библиотеки (включая C‑расширения) уже находятся внутри, поэтому конфликтов версий нет.\n\nКак пользоваться:\n\nУстанавливаем сам инструмент:\n\npip install pex\nСобираем .pex-файл:\n\npex requests -o fetch.pex --script=requests\nПосле этого fetch.pex — это готовый исполняемый файл, который при запуске сразу импортирует и запускает библиотеку requests.\n\nИнтеграция с другими сборщиками:\nСистемы вроде Pants, Buck и {py}gradle могут автоматически собирать .pex-архивы из вашего кода.\n\nЛицензия: Apache 2.0\n\n▪ GitHub: https://github.com/pex-tool/pex\n▪ Документация: https://docs.pex-tool.org/\n\n@Python_Community_ru","datePublished":"2025-04-22T11:15:20Z","dateModified":"2025-04-22T11:15:20Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":855},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":10}]}},{"@type":"ListItem","position":5,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2574","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2574","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2574","headline":"🔥 Smolmodels (https://github.com/plexe-ai/smolmodels) — это библиотека на Python, которая позволяет создавать…","articleBody":"🔥 Smolmodels (https://github.com/plexe-ai/smolmodels) — это библиотека на Python, которая позволяет создавать модели машинного обучения, описывая их поведение на естественном языке и используя минимум кода!\n\n🔍 Основные возможности Smolmodels:\n\n🌟 Определение моделей с помощью естественного языка: Пользователь описывает намерение модели и её входные и выходные схемы на обычном языке, а библиотека автоматически выбирает метрику для оптимизации и генерирует логику для инженерии признаков, обучения модели и её оценки.\n\n🌟 Построение модели: Метод model.build() принимает набор данных (существующий или сгенерированный) и создаёт множество возможных решений модели, обучая и оценивая их для выбора наилучшего.\n\n🌟 Генерация данных и определение схемы: Библиотека может генерировать синтетические данные для обучения и тестирования, что полезно при отсутствии реальных данных или для дополнения существующих.\n\n🔐 Лицензия: Apache-2.0\n\n🖥 Github (https://github.com/plexe-ai/smolmodels)\n\n@Python_Community_ru","datePublished":"2025-04-21T11:18:11Z","dateModified":"2025-04-21T11:18:11Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1042},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":12}]}},{"@type":"ListItem","position":6,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2573","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2573","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2573","headline":"🐍 Как легко создать мультисловарь (Multi-dictionary) в Python Хотите, чтобы один ключ в словаре соответствова…","articleBody":"🐍 Как легко создать мультисловарь (Multi-dictionary) в Python\n\nХотите, чтобы один ключ в словаре соответствовал нескольким значениям? \n\nЭто просто!\n\nИспользуйте collections.defaultdict и встроенный list:\n\nfrom collections import defaultdict\n\nmultidict = defaultdict(list)\nmultidict[\"SW\"].append(\"Han Solo\")\nmultidict[\"SW\"].append(\"R2D2\")\n\n🔁 Теперь каждый ключ по умолчанию связан с пустым списком. А метод append добавляет новое значение в этот список.\n\nНо будьте внимательны: это немного “обман”. На самом деле словарь по-прежнему отображает один ключ → одно значение. Просто это значение — список, в который вы сами добавляете что угодно.\n\nПочему defaultdict удобен? \nПотому что вам не нужно проверять, существует ли ключ в словаре. Пустой список будет создан автоматически при первом обращении к ключу.\n\n@Python_Community_ru","datePublished":"2025-04-20T17:21:31Z","dateModified":"2025-04-20T17:21:31Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":879},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":8}]}},{"@type":"ListItem","position":7,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2572","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2572","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2572","headline":"🔥 TeleGraphite — это быстрый и надежный скрапер публичных Telegram-каналов, написанный на Python. Возможности…","articleBody":"🔥 TeleGraphite — это быстрый и надежный скрапер публичных Telegram-каналов, написанный на Python.\n\nВозможности:\n- Извлечение постов из нескольких каналов в формате JSON (ID, текст, время, ссылки, почты, телефоны)\n- Загрузка медиафайлов (фото, видео, документы)\n- Удаление дубликатов\n- Однократный режим (telegraphite once) и непрерывный (telegraphite continuous --interval)\n- Фильтрация по ключевым словам и типу контента (текст/медиа)\n- Планирование запусков по расписанию\n- Настройка через CLI и YAML\n\nУстановка:\n1) pip install telegraphite\n2) Создать .env с API_ID и API_HASH\n3) Список каналов в channels.txt\n\nРепозиторий: https://github.com/hamodywe/telegram-scraper-TeleGraphite\n\n@Python_Community_ru","datePublished":"2025-04-20T11:22:03Z","dateModified":"2025-04-20T11:22:03Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":840},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":14}]}},{"@type":"ListItem","position":8,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2571","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2571","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2571","headline":"‍🖥 less_slow.py (http://github.com/ashvardanian/less_slow.py) — Python, который не тормозит Многие считают Py…","articleBody":"‍🖥 less_slow.py (http://github.com/ashvardanian/less_slow.py) — Python, который не тормозит\n\nМногие считают Python медленным, но это не всегда так. Ash Vardanyan в проекте Less Slow демонстрирует, как писать быстрый и эффективный код на Python — без магии, но с пониманием.\n\n🐍 Что представлено в проекте:\n🔹 pandas против polars — что быстрее при работе с миллионами строк\n🔹 Использование Numba, Cython, PyO3, rust bindings\n🔹 Работа с нативными типами, векторизация и zero-copy\n🔹 Сериализация без проблем: сравнение MessagePack, Arrow, Parquet\n🔹 Сравнение аллокаторов, подходов к I/O и нагрузочным тестам\n🔹 Ускорение парсинга JSON: orjson, yyjson, simdjson, ujson\n🔹 Как обойти GIL и не расплачиваться за удобство интерпретатора\n\n📦 Библиотеки и техники:\n▪ Numba, Cython, cffi, maturin\n▪ simdjson, orjson, polars\n▪ pyarrow, msgspec, blosc2, memoryview\n▪ Работа с mmap, zero-copy, JIT-компиляция, py-spy, perf\n\n📈 Кому это подойдет:\n▪ Тем, кто пишет ETL, пайплайны или ML/AI обработку\n▪ Кто работает с большими объемами данных или бинарными файлами\n▪ Кто хочет “оптимизировать до безобразия” и понять, как работает Python под капотом\n\nВ серии есть еще 2 интересных проекта:\n\n🖥 less_slow.cpp — C++ без тормозов: ассемблер, кеши, SIMD, аллокации, парсинг JSON и трюки с памятью\n👉 github.com/ashvardanian/less_slow.cpp\n\n👣 less_slow.rs — продвинутый Rust: сравнение async/sync, SIMD, кеш-френдли структуры, быстрые сериализации\n👉 github.com/ashvardanian/less_slow.rs\n\n📚 Репозиторий (http://github.com/ashvardanian/less_slow.py):\n\n💡 Даже если ты не используешь всё это каждый день, ты точно станешь писать лучший Python-код.\n\n@Python_Community_ru","datePublished":"2025-04-19T17:24:17Z","dateModified":"2025-04-19T17:24:17Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":804},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":15}]}},{"@type":"ListItem","position":9,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2570","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2570","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2570","headline":"😂 Жиза @Python_Community_ru","articleBody":"😂 Жиза\n \n\n\n@Python_Community_ru","datePublished":"2025-04-18T17:30:13Z","dateModified":"2025-04-18T17:30:13Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":852},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9}]}},{"@type":"ListItem","position":10,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2569","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2569","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2569","headline":"🐍 7 “бесполезных” функций Python, которые на самом деле полезны Инструменты из стандартной библиотеки, которы…","articleBody":"🐍 7 “бесполезных” функций Python, которые на самом деле полезны\n\nИнструменты из стандартной библиотеки, которые могут удивить:\n\n1. textwrap.dedent() — убирает отступы у многострочного текста.\n\nimport textwrap\ntext = textwrap.dedent(\\\"\\\"\\\"\n Привет!\n Это текст с отступами.\n\\\"\\\"\\\").strip()\nprint(text)\n\n2. difflib.get_close_matches() — находит схожие строки.\n\nimport difflib\nwords = [\"python\", \"java\", \"javascript\"]\nprint(difflib.get_close_matches(\"javascrip\", words))\n\n3. uuid.uuid4() — создает уникальный идентификатор.\n\nimport uuid\nprint(uuid.uuid4())\n\n4. shutil.get_terminal_size() — определяет размеры терминала.\n\nimport shutil\ncolumns, rows = shutil.get_terminal_size()\nprint(f\"Размер терминала: {columns}x{rows}\")\n\n5. functools.lru_cache() — сохраняет результаты функции в кэше.\n\nfrom functools import lru_cache\n@lru_cache(maxsize=None)\ndef fib(n):\n if n < 2:\n return n\n return fib(n-1) + fib(n-2)\nprint(fib(100))\n\n6. itertools.groupby() — группирует элементы по ключу.\n\nfrom itertools import groupby\ndata = [('fruit', 'apple'), ('fruit', 'banana'), ('veg', 'carrot')]\nfor key, group in groupby(data, lambda x: x[0]):\n print(key, list(group))\n\n7. contextlib.suppress() — элегантная альтернатива конструкции try-except.\n\nfrom contextlib import suppress\nwith suppress(FileNotFoundError):\n open(\"not_exist.txt\")\n\n@Python_Community_ru","datePublished":"2025-04-18T11:32:14Z","dateModified":"2025-04-18T11:32:14Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":800},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":11,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2568","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2568","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2568","headline":"‍🔍 Основные новшества в Django 5.2 1. 📦 Автоматический импорт моделей в интерактивной оболочке Теперь при зап…","articleBody":"‍🔍 Основные новшества в Django 5.2\n\n1. 📦 Автоматический импорт моделей в интерактивной оболочке\nТеперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются. \n\nЭто облегчает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробной информации об импортированных объектах можно использовать флаг -v 2.\n\n2. 🔗 Поддержка составных первичных ключей\nDjango 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.\n\n3. 🧩 Гибкая настройка BoundField в формах\nТеперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это дает разработчикам более тонкий контроль над отображением и поведением форм.\n\n4. ⚡ Расширенная асинхронная поддержка\nDjango продолжает развивать асинхронность, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.\n\n5. 🎨 Новые виджеты форм и улучшения интерфейса\nДобавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.\n\n6. 🗃️ Улучшения в работе с базой данных\nПоддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve. \n\nПо умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3. \n\nУлучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.\n\n🔧 Совместимость и поддержка\nDjango 5.2 поддерживает Python версий 3.10–3.13. \n\nС выходом этой версии основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2. \n\nDjango 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.\n\n📥 Обновление и ресурсы\nЗагрузить Django 5.2 можно с официальной страницы загрузки или через PyPI. \n\nПолные примечания к релизу доступны в официальной документации. \n\nДля автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade. \n\nDjango 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии. \n\n📌 Релиз (https://adamj.eu/tech/2025/04/07/django-whats-new-5.2/)\n\n@Python_Community_ru","datePublished":"2025-04-17T23:33:04Z","dateModified":"2025-04-17T23:33:04Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":763},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":7}]}},{"@type":"ListItem","position":12,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2567","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2567","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2567","headline":"⚡️Создаем рекомендательную систему фильмов на Kaggle Вы когда-нибудь задумывались о создании своей собственно…","articleBody":"⚡️Создаем рекомендательную систему фильмов на Kaggle\n\nВы когда-нибудь задумывались о создании своей собственной системы рекомендаций для фильмов? 🎬\n\nПриходите на бесплатный вебинар, где Савелий Батурин, старший инженер по машинному обучению и преподаватель курса по машинному обучению в школе Simulative, в прямом эфире покажет, как создать рекомендательную систему фильмов на Kaggle.\n\nЧто мы будем делать на вебинаре:\n🟠Разберем существующие данные о фильмах и их оценках.\n🟠Проведем предобработку данных.\n🟠Создадим рекомендательную систему на основе машинного обучения.\n🟠Выполним расчет и анализ метрик на основе результатов работы модели.\n\nВебинар будет интересен как новичкам, так и опытным специалистам.\n\n😶Зарегистрироваться на бесплатный вебинар (https://r.bothelp.io/tg?domain=events_simulative_bot&start=c1701331004517-ds&funnel=web-recsys&utm_source=telegram&utm_medium=paid-placement&utm_campaign=pythonl&utm_content=11-04-2025&erid=2VtzquhLyzA)\n\n@Python_Community_ru","datePublished":"2025-04-17T17:34:13Z","dateModified":"2025-04-17T17:46:07Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":67},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":13,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2566","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2566","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2566","headline":"Реальные проекты и отличная возможность для старта карьеры: Летняя школа бэкенд‑разработки Яндекса открыла на…","articleBody":"Реальные проекты и отличная возможность для старта карьеры: Летняя школа бэкенд‑разработки Яндекса открыла набор\n\nНачинающие бэкендеры, есть планы на лето? Летняя школа бэкенда — ваш шанс прокачаться в разработке, даже если вы обладаете базовыми знаниями в Python, Java или C++.\n\nКак проходит обучение:\n— со 2 июня по 27 июля — онлайн-лекции, семинары и практические задания\n— с 28 июля по 24 августа — разработка реальных проектов офлайн или онлайн\n\nВас ждут:\n— работа в фулстек-командах в коворкингах Яндекса\n— лекции от специалистов компании в летнем лектории \n— возможность стать частью команды и получить офер: больше половины выпускников становятся стажерами или сотрудниками компании\n\nШкола бесплатная, но нужно пройти отбор. Если у вас есть минимальный опыт в бэкенде и желание стать частью одной из команд сервисов, то отправляйте заявку на обучение до 27 апреля!","datePublished":"2025-04-17T12:36:06Z","dateModified":"2025-05-17T09:16:57Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":797},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2565","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2565","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2565","headline":"🐍 Dulwich — это проект, который предоставляет альтернативу традиционным библиотекам, таким как GitPython и py…","articleBody":"🐍 Dulwich — это проект, который предоставляет альтернативу традиционным библиотекам, таким как GitPython и pygit2. Он полностью написан на Python и не требует наличия нативного Git.\n\nЭтот инструмент поддерживает как базовые операции с репозиториями, так и более сложные команды, которые имитируют интерфейс командной строки Git. Для пользователей, ценящих производительность, доступны дополнительные расширения на Rust.\n\n🤖 GitHub (https://github.com/jelmer/dulwich)\n\n@Python_Community_ru","datePublished":"2025-04-17T11:38:30Z","dateModified":"2025-04-17T11:38:30Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":746},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":6}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2564","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2564","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2564","headline":"🖥 Новый фреймворк Function (fxn) компилирует Python-функции в нативный код с производительностью, сравнимой с…","articleBody":"🖥 Новый фреймворк Function (fxn) компилирует Python-функции в нативный код с производительностью, сравнимой с Rust.\n\n🧠 Как это работает?\n- Используется символическое трассирование на CPython для анализа функций.\n- Генерируется промежуточное представление (IR).\n- IR транслируется в C++ или Rust, а затем компилируется в бинарный код.\n- Поддерживаются платформы: Linux, Android, WebAssembly и другие.\n\n📦 Пример:\n@compile\ndef fma(x: float, y: float, z: float) -> float:\n return x * y + z\nПосле компиляции вы получаете нативный бинарный файл, который можно запускать без интерпретатора Python.\n\n🔗 Подробнее (https://blog.fxn.ai/python-at-the-speed-of-rust/)\n🔗 Github (https://github.com/olokobayusuf/)\n\n#Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm\n\n@Python_Community_ru","datePublished":"2025-04-16T17:40:04Z","dateModified":"2025-04-16T17:40:04Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":835},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":10}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2563","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2563","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2563","headline":"📌 Tracecat — это платформа с открытым исходным кодом для автоматизации безопасности. Проект предоставляет шаб…","articleBody":"📌 Tracecat — это платформа с открытым исходным кодом для автоматизации безопасности. Проект предоставляет шаблоны в формате YAML для создания рабочих процессов с визуальным редактором, что упрощает автоматизацию рутинных задач.\n\nИнструмент позволяет интегрировать Temporal для надежного выполнения сценариев и поддерживает MITRE D3FEND. Локальный запуск возможен с использованием Docker Compose, а для продакшена доступны конфигурации Terraform для AWS Fargate.\n\n🤖 GitHub (https://github.com/TracecatHQ/tracecat) \n\n@Python_Community_ru","datePublished":"2025-04-16T11:41:32Z","dateModified":"2025-04-16T11:41:32Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":814},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2562","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2562","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2562","headline":"‍🌟 TARIFF — это инструмент, который вы действительно ждали, пакет для Python, который снова делает импорты \"В…","articleBody":"‍🌟 TARIFF — это инструмент, который вы действительно ждали, пакет для Python, который снова делает импорты \"Великими\". \n\nЭтот инструмент позволяет устанавливать \"пошлины\" на библиотеки Python, замедляя загрузку определённых пакетов, чтобы подчеркнуть идею \"экономического протекционизма\" в коде. \n\n✔️ Основные характеристики\nИмитация тарифов на импорты: пользователь может установить \"тарифы\" (в процентах) на определённые пакеты, например:\n\n```python\nimport tariff\n\ntariff.set({\n \"numpy\": 50, # 50% тариф на numpy\n \"pandas\": 200, # 200% тариф на pandas\n \"requests\": 150 # 150% тариф на requests\n})\n```\n\n▪ Замедление импорта: при импорте указанных пакетов время загрузки увеличивается пропорционально установленному тарифу. \n\nВывод сообщений: при каждом импорте с \"обложенным тарифом\" выводится сообщение в стиле политической риторики, например:\n\n```plaintext\nТолько что введён 50% тариф на numpy! Исходный импорт занял 45000 мкс, теперь занимает 67500 мкс. Американские пакеты снова побеждают! #MIPA\n```\n\nБиблиотека использует monkey-patching для перехвата и изменения процесса импорта. \n\n▪Github (https://github.com/hxu296/tariff)\n\n@ai_machinelearning_big_data\n\n#fun #python\n\n@Python_Community_ru","datePublished":"2025-04-15T17:46:08Z","dateModified":"2025-04-15T17:46:08Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":756},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2561","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2561","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2561","headline":"‍🖥 Важная особенность генераторов в Python! Давайте разберемся, как это работает. Что такое генератор? Функци…","articleBody":"‍🖥 Важная особенность генераторов в Python! \n\nДавайте разберемся, как это работает.\n\nЧто такое генератор? \nФункция my_generator_function является генератором, поскольку использует ключевое слово yield.\n\nВ отличие от обычной функции, которая выполняет весь код и возвращает одно значение через return, генератор \"приостанавливается\" на каждом yield, возвращая указанное значение. \n\nПри следующем вызове он возобновляет работу с того места, где остановился. \nКак работает yield? \nКогда вы вызываете gen = my_generator_function(), код внутри функции не выполняется. \n\nСоздается специальный объект-генератор (gen). \nПервый вызов next(gen) заставляет функцию выполниться до первого yield 1. Функция возвращает 1 и приостанавливается. \nВторой вызов next(gen) возобновляет выполнение с точки после yield 1 и доходит до yield 2. Функция возвращает 2 и снова приостанавливается. \nИменно поэтому print(next(gen), next(gen)) выводит 1 2.\n\nКак работает return в генераторе? \nКогда поток выполнения внутри генератора доходит до оператора return (в нашем случае return 73) или просто до конца функции без явного return, генератор считается завершенным. \n\nВажно: значение, указанное в return (здесь 73), не возвращается как обычное значение через yield. Вместо этого генератор выбрасывает специальное исключение: StopIteration.\n\nЭтот механизм StopIteration является стандартным способом в Python сигнализировать, что итератор (а генератор - это тип итератора) исчерпан.\n\nПерехват StopIteration и получение значения: \nВ правой части кода мы пытаемся вызвать next(gen) еще раз. \n\nГенератор возобновляется после yield 2, доходит до return 73 и выбрасывает StopIteration.\n\nКонструкция try...except StopIteration as err: перехватывает это исключение.\n\nКлючевой момент: значение, указанное в операторе return генератора (73), становится доступным как атрибут .value пойманного исключения StopIteration.\n\nПоэтому print(err.value) выводит 73.\n\nИтог: \nReturn в генераторе не производит очередное значение, а завершает его работу. При этом значение из return \"упаковывается\" в исключение StopIteration, сигнализирующее об окончании, и его можно извлечь из атрибута .value этого исключения, если перехватить его вручную.\n\nСтандартный цикл for item in generator(): в Python автоматически обрабатывает StopIteration (просто завершает цикл) и не дает прямого доступа к err.value. Поэтому для демонстрации этого механизма и получения возвращаемого значения используется явный вызов next() внутри блока try...except.\n\n@Python_Community_ru","datePublished":"2025-04-15T11:47:04Z","dateModified":"2025-04-15T11:47:04Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":677},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":6}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2560","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2560","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2560","headline":"🧠 Как кэш CPU влияет на производительность кода на Python? Лукас Аткинсон провёл эксперименты, чтобы выяснить…","articleBody":"🧠 Как кэш CPU влияет на производительность кода на Python?\n\nЛукас Аткинсон провёл эксперименты, чтобы выяснить, как поведение кэша процессора сказывается на времени выполнения кода на Python. Результаты оказались неожиданными.\n\n🔍 Основные выводы:\n\n- Последовательный доступ к спискам происходит быстрее, чем случайный\n- При 200 тысячах элементов случайный доступ замедляется на 47%\n- При 1.6 миллионах элементов — почти в 4 раза\n- Python подвержен влиянию низкоуровневых аспектов памяти, включая кэш CPU\n\n💡 Рекомендация: при работе с большими объёмами данных лучше использовать последовательный доступ — это действительно ускоряет код.\n\n📖 Узнать больше: lukasatkinson.de (https://lukasatkinson.de/2024/python-cpu-caching/)\n\n@Python_Community_ru","datePublished":"2025-04-14T11:52:10Z","dateModified":"2025-04-14T11:52:10Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":855},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":6}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2559","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2559","mainEntityOfPage":"https://telemetr.io/fa/channels/1387967118-python_community_ru/posts/2559","headline":"Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже…","articleBody":"Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже на множественные вызовы метода replace.\n\n```python\nimport string\n\ns = \"Hello, world!\"\nprint(s.translate(str.maketrans(\"\", \"\", string.punctuation)))\n# Hello world\n```\n\nМетод translate ожидает «таблицу перевода», которую мы создаем с помощью вспомогательного метода класса maketrans.\n\nТретий аргумент (string.punctuation в примере) — это строка символов, которые мы хотим удалить.\n\nЗначение string.punctuation включает в себя следующие символы:\n!#$%&'()*+,-./:;?@[\\]^_{|}~`\n\nСуть шпаргалки заключается в том, что она демонстрирует, как эффективно удалить все стандартные знаки препинания из строки в Python, используя комбинацию методов str.maketrans для создания инструкции по удалению и str.translate для применения этой инструкции к строке.\n\n@Python_Community_ru","datePublished":"2025-04-13T11:56:02Z","dateModified":"2025-04-13T11:56:02Z","author":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"publisher":{"@type":"Organization","name":"Python Community","url":"https://telemetr.io/fa/channels/1387967118-python_community_ru","image":"https://img.telemetr.io/c/1vVLEq/5346325335752422150?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":830},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}}]}
Как создать надёжный софт, который будет работать в любых условиях? 29 апреля в 20:00 МСК на открытом вебинаре вы узнаете, ка
Как создать надёжный софт, который будет работать в любых условиях? 29 апреля в 20:00 МСК на открытом вебинаре вы узнаете, как защитить свой код от проблем, которые могут возникнуть в реальной эксплуатации. Что разберём: — Как гарантировать отказоустойчивость приложений. — Подходы к снижению влияния сбоев и ошибок в связанных сервисах. — Основные приемы и инструменты для создания надежных систем. Полезно для разработчиков, QA-инженеров и архитекторов. Открытый урок пройдет в преддверие старта курса «Python Developer. Professional». Все участники получат скидку на обучение. Регистрируйтесь прямо сейчас: https://clck.ru/3Ld47x Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Zev 🔍 Это помощник для работы с терминалом на естественном языке. Он помогает быстро находить нужные команды и сохранять их в избранное. Его простой и понятный интерфейс делает освоение терминала доступным даже для новичков. pip install zev 📌 Github (https://github.com/dtnewman/zev) @Python_Community_ru

‍🖥 Новая функция в Python 3.14: t-строки — типобезопасные f-строки Python 3.14 вводит t"..." — новый синтаксис для строк, который ориентирован на безопасность типов и интеграцию с различными системами шаблонов, такими как SQL, HTML и другие. 🔹 Что такое t-строка? t"..." — это как f"...", но: - интерполяция ограничена и контролируется; - поддерживается строгое соответствие шаблону; - переменные можно передавать явно, что предотвращает SQL-инъекции и XSS. 🔸 Пример: name = "Alice" greeting = t"Hello, {name}!" # t-строка Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями в качестве параметров. 🔐 Зачем это нужно? ✅ Обеспечение безопасности при генерации SQL, HTML, JSON ✅ Улучшение инструментов и проверки типов (посредством статического анализа) ✅ Контроль над контекстом исполнения (нельзя просто вставить переменную как есть — её нужно передать явно) 📦 Использование: t-строки — это первый шаг к "template string literals", как в TypeScript. Можно использовать с функциями: def html(template: T[str]) -> SafeHTML: ... html(t"{user_input}") 💡 Почему это важно? Старый код: f"SELECT * FROM users WHERE name = &apos;{user_name}&apos;" может привести к SQL-инъекциям и XSS. t-строки являются безопасной альтернативой с встроенной защитой. 🛡 Пример: безопасный HTML template = t"{user_input}" html_output = html(template) # <script>alert(&apos;bad&apos;)</script> Функция html() может вернуть не просто строку, а полноценный HTMLElement. Больше никакой "грязи" — всё чисто и типобезопасно. 🔍 Работа с шаблоном t-строки позволяют получить доступ к содержимому: template = t"Hello {name}!" template.strings # ("Hello ", "!") template.values # (name,) template.interpolations[0].format_spec # ">8" Можно также вручную собрать шаблон: Template("Hello ", Interpolation(value="World", expression="name"), "!") 🚀 Вывод: t"..." — шаг к безопасным шаблонам и типизации строк в Python. Готовься к будущему Python — безопасному по умолчанию. 📌 Подробнее здесь (https://davepeck.org/2025/04/11/pythons-new-t-strings/) @Python_Community_ru

‍🖥 ex — это инструмент для создания единого исполняемого файла .pex, который содержит всю вашу программу на Python и её зависимости. Это самодостаточная и переносимая среда выполнения, аналогичная virtualenv, но упакованная в один файл. Зачем это нужно? Простота развертывания: чтобы установить и запустить приложение, достаточно скопировать файл app.pex и запустить его — никакой дополнительной настройки. Портируемость: один файл может включать сборки для разных платформ (Linux, macOS). Изоляция зависимостей: все библиотеки (включая C‑расширения) уже находятся внутри, поэтому конфликтов версий нет. Как пользоваться: Устанавливаем сам инструмент: pip install pex Собираем .pex-файл: pex requests -o fetch.pex --script=requests После этого fetch.pex — это готовый исполняемый файл, который при запуске сразу импортирует и запускает библиотеку requests. Интеграция с другими сборщиками: Системы вроде Pants, Buck и {py}gradle могут автоматически собирать .pex-архивы из вашего кода. Лицензия: Apache 2.0 ▪ GitHub: https://github.com/pex-tool/pex ▪ Документация: https://docs.pex-tool.org/ @Python_Community_ru

🔥 Smolmodels (https://github.com/plexe-ai/smolmodels) — это библиотека на Python, которая позволяет создавать модели машинно
🔥 Smolmodels (https://github.com/plexe-ai/smolmodels) — это библиотека на Python, которая позволяет создавать модели машинного обучения, описывая их поведение на естественном языке и используя минимум кода! 🔍 Основные возможности Smolmodels: 🌟 Определение моделей с помощью естественного языка: Пользователь описывает намерение модели и её входные и выходные схемы на обычном языке, а библиотека автоматически выбирает метрику для оптимизации и генерирует логику для инженерии признаков, обучения модели и её оценки. 🌟 Построение модели: Метод model.build() принимает набор данных (существующий или сгенерированный) и создаёт множество возможных решений модели, обучая и оценивая их для выбора наилучшего. 🌟 Генерация данных и определение схемы: Библиотека может генерировать синтетические данные для обучения и тестирования, что полезно при отсутствии реальных данных или для дополнения существующих. 🔐 Лицензия: Apache-2.0 🖥 Github (https://github.com/plexe-ai/smolmodels) @Python_Community_ru

🐍 Как легко создать мультисловарь (Multi-dictionary) в Python Хотите, чтобы один ключ в словаре соответствовал нескольким зн
🐍 Как легко создать мультисловарь (Multi-dictionary) в Python Хотите, чтобы один ключ в словаре соответствовал нескольким значениям? Это просто! Используйте collections.defaultdict и встроенный list: from collections import defaultdict multidict = defaultdict(list) multidict["SW"].append("Han Solo") multidict["SW"].append("R2D2") 🔁 Теперь каждый ключ по умолчанию связан с пустым списком. А метод append добавляет новое значение в этот список. Но будьте внимательны: это немного “обман”. На самом деле словарь по-прежнему отображает один ключ → одно значение. Просто это значение — список, в который вы сами добавляете что угодно. Почему defaultdict удобен? Потому что вам не нужно проверять, существует ли ключ в словаре. Пустой список будет создан автоматически при первом обращении к ключу. @Python_Community_ru

🔥 TeleGraphite — это быстрый и надежный скрапер публичных Telegram-каналов, написанный на Python. Возможности: - Извлечение
🔥 TeleGraphite — это быстрый и надежный скрапер публичных Telegram-каналов, написанный на Python. Возможности: - Извлечение постов из нескольких каналов в формате JSON (ID, текст, время, ссылки, почты, телефоны) - Загрузка медиафайлов (фото, видео, документы) - Удаление дубликатов - Однократный режим (telegraphite once) и непрерывный (telegraphite continuous --interval) - Фильтрация по ключевым словам и типу контента (текст/медиа) - Планирование запусков по расписанию - Настройка через CLI и YAML Установка: 1) pip install telegraphite 2) Создать .env с API_ID и API_HASH 3) Список каналов в channels.txt Репозиторий: https://github.com/hamodywe/telegram-scraper-TeleGraphite @Python_Community_ru

‍🖥 less_slow.py (http://github.com/ashvardanian/less_slow.py) — Python, который не тормозит Многие считают Python медленным, но это не всегда так. Ash Vardanyan в проекте Less Slow демонстрирует, как писать быстрый и эффективный код на Python — без магии, но с пониманием. 🐍 Что представлено в проекте: 🔹 pandas против polars — что быстрее при работе с миллионами строк 🔹 Использование Numba, Cython, PyO3, rust bindings 🔹 Работа с нативными типами, векторизация и zero-copy 🔹 Сериализация без проблем: сравнение MessagePack, Arrow, Parquet 🔹 Сравнение аллокаторов, подходов к I/O и нагрузочным тестам 🔹 Ускорение парсинга JSON: orjson, yyjson, simdjson, ujson 🔹 Как обойти GIL и не расплачиваться за удобство интерпретатора 📦 Библиотеки и техники: ▪ Numba, Cython, cffi, maturin ▪ simdjson, orjson, polars ▪ pyarrow, msgspec, blosc2, memoryview ▪ Работа с mmap, zero-copy, JIT-компиляция, py-spy, perf 📈 Кому это подойдет: ▪ Тем, кто пишет ETL, пайплайны или ML/AI обработку ▪ Кто работает с большими объемами данных или бинарными файлами ▪ Кто хочет “оптимизировать до безобразия” и понять, как работает Python под капотом В серии есть еще 2 интересных проекта: 🖥 less_slow.cpp — C++ без тормозов: ассемблер, кеши, SIMD, аллокации, парсинг JSON и трюки с памятью 👉 github.com/ashvardanian/less_slow.cpp 👣 less_slow.rs — продвинутый Rust: сравнение async/sync, SIMD, кеш-френдли структуры, быстрые сериализации 👉 github.com/ashvardanian/less_slow.rs 📚 Репозиторий (http://github.com/ashvardanian/less_slow.py): 💡 Даже если ты не используешь всё это каждый день, ты точно станешь писать лучший Python-код. @Python_Community_ru

😂 Жиза @Python_Community_ru
😂 Жиза @Python_Community_ru

🐍 7 “бесполезных” функций Python, которые на самом деле полезны Инструменты из стандартной библиотеки, которые могут удивить: 1. textwrap.dedent() — убирает отступы у многострочного текста. import textwrap text = textwrap.dedent(\"\"\" Привет! Это текст с отступами. \"\"\").strip() print(text) 2. difflib.get_close_matches() — находит схожие строки. import difflib words = ["python", "java", "javascript"] print(difflib.get_close_matches("javascrip", words)) 3. uuid.uuid4() — создает уникальный идентификатор. import uuid print(uuid.uuid4()) 4. shutil.get_terminal_size() — определяет размеры терминала. import shutil columns, rows = shutil.get_terminal_size() print(f"Размер терминала: {columns}x{rows}") 5. functools.lru_cache() — сохраняет результаты функции в кэше. from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) print(fib(100)) 6. itertools.groupby() — группирует элементы по ключу. from itertools import groupby data = [(&apos;fruit&apos;, &apos;apple&apos;), (&apos;fruit&apos;, &apos;banana&apos;), (&apos;veg&apos;, &apos;carrot&apos;)] for key, group in groupby(data, lambda x: x[0]): print(key, list(group)) 7. contextlib.suppress() — элегантная альтернатива конструкции try-except. from contextlib import suppress with suppress(FileNotFoundError): open("not_exist.txt") @Python_Community_ru

‍🔍 Основные новшества в Django 5.2 1. 📦 Автоматический импорт моделей в интерактивной оболочке Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются. Это облегчает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробной информации об импортированных объектах можно использовать флаг -v 2. 2. 🔗 Поддержка составных первичных ключей Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений. 3. 🧩 Гибкая настройка BoundField в формах Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это дает разработчикам более тонкий контроль над отображением и поведением форм. 4. ⚡ Расширенная асинхронная поддержка Django продолжает развивать асинхронность, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений. 5. 🎨 Новые виджеты форм и улучшения интерфейса Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями. 6. 🗃️ Улучшения в работе с базой данных Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve. По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3. Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке. 🔧 Совместимость и поддержка Django 5.2 поддерживает Python версий 3.10–3.13. С выходом этой версии основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2. Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой. 📥 Обновление и ресурсы Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI. Полные примечания к релизу доступны в официальной документации. Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade. Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии. 📌 Релиз (https://adamj.eu/tech/2025/04/07/django-whats-new-5.2/) @Python_Community_ru

⚡️Создаем рекомендательную систему фильмов на Kaggle Вы когда-нибудь задумывались о создании своей собственной системы рекоме
⚡️Создаем рекомендательную систему фильмов на Kaggle Вы когда-нибудь задумывались о создании своей собственной системы рекомендаций для фильмов? 🎬 Приходите на бесплатный вебинар, где Савелий Батурин, старший инженер по машинному обучению и преподаватель курса по машинному обучению в школе Simulative, в прямом эфире покажет, как создать рекомендательную систему фильмов на Kaggle. Что мы будем делать на вебинаре: 🟠Разберем существующие данные о фильмах и их оценках. 🟠Проведем предобработку данных. 🟠Создадим рекомендательную систему на основе машинного обучения. 🟠Выполним расчет и анализ метрик на основе результатов работы модели. Вебинар будет интересен как новичкам, так и опытным специалистам. 😶Зарегистрироваться на бесплатный вебинар (https://r.bothelp.io/tg?domain=events_simulative_bot&start=c1701331004517-ds&funnel=web-recsys&utm_source=telegram&utm_medium=paid-placement&utm_campaign=pythonl&utm_content=11-04-2025&erid=2VtzquhLyzA) @Python_Community_ru

Реальные проекты и отличная возможность для старта карьеры: Летняя школа бэкенд‑разработки Яндекса открыла набор Начинающие б
Реальные проекты и отличная возможность для старта карьеры: Летняя школа бэкенд‑разработки Яндекса открыла набор Начинающие бэкендеры, есть планы на лето? Летняя школа бэкенда — ваш шанс прокачаться в разработке, даже если вы обладаете базовыми знаниями в Python, Java или C++. Как проходит обучение: — со 2 июня по 27 июля — онлайн-лекции, семинары и практические задания — с 28 июля по 24 августа — разработка реальных проектов офлайн или онлайн Вас ждут: — работа в фулстек-командах в коворкингах Яндекса — лекции от специалистов компании в летнем лектории — возможность стать частью команды и получить офер: больше половины выпускников становятся стажерами или сотрудниками компании Школа бесплатная, но нужно пройти отбор. Если у вас есть минимальный опыт в бэкенде и желание стать частью одной из команд сервисов, то отправляйте заявку на обучение до 27 апреля!

🐍 Dulwich — это проект, который предоставляет альтернативу традиционным библиотекам, таким как GitPython и pygit2. Он полнос
🐍 Dulwich — это проект, который предоставляет альтернативу традиционным библиотекам, таким как GitPython и pygit2. Он полностью написан на Python и не требует наличия нативного Git. Этот инструмент поддерживает как базовые операции с репозиториями, так и более сложные команды, которые имитируют интерфейс командной строки Git. Для пользователей, ценящих производительность, доступны дополнительные расширения на Rust. 🤖 GitHub (https://github.com/jelmer/dulwich) @Python_Community_ru

🖥 Новый фреймворк Function (fxn) компилирует Python-функции в нативный код с производительностью, сравнимой с Rust. 🧠 Как это работает? - Используется символическое трассирование на CPython для анализа функций. - Генерируется промежуточное представление (IR). - IR транслируется в C++ или Rust, а затем компилируется в бинарный код. - Поддерживаются платформы: Linux, Android, WebAssembly и другие. 📦 Пример: @compile def fma(x: float, y: float, z: float) -> float: return x * y + z После компиляции вы получаете нативный бинарный файл, который можно запускать без интерпретатора Python. 🔗 Подробнее (https://blog.fxn.ai/python-at-the-speed-of-rust/) 🔗 Github (https://github.com/olokobayusuf/) #Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm @Python_Community_ru

📌 Tracecat — это платформа с открытым исходным кодом для автоматизации безопасности. Проект предоставляет шаблоны в формате
📌 Tracecat — это платформа с открытым исходным кодом для автоматизации безопасности. Проект предоставляет шаблоны в формате YAML для создания рабочих процессов с визуальным редактором, что упрощает автоматизацию рутинных задач. Инструмент позволяет интегрировать Temporal для надежного выполнения сценариев и поддерживает MITRE D3FEND. Локальный запуск возможен с использованием Docker Compose, а для продакшена доступны конфигурации Terraform для AWS Fargate. 🤖 GitHub (https://github.com/TracecatHQ/tracecat) @Python_Community_ru

‍🌟 TARIFF — это инструмент, который вы действительно ждали, пакет для Python, который снова делает импорты "Великими". Этот инструмент позволяет устанавливать "пошлины" на библиотеки Python, замедляя загрузку определённых пакетов, чтобы подчеркнуть идею "экономического протекционизма" в коде. ✔️ Основные характеристики Имитация тарифов на импорты: пользователь может установить "тарифы" (в процентах) на определённые пакеты, например: ```python import tariff tariff.set({ "numpy": 50, # 50% тариф на numpy "pandas": 200, # 200% тариф на pandas "requests": 150 # 150% тариф на requests }) ``` ▪ Замедление импорта: при импорте указанных пакетов время загрузки увеличивается пропорционально установленному тарифу. Вывод сообщений: при каждом импорте с "обложенным тарифом" выводится сообщение в стиле политической риторики, например: ```plaintext Только что введён 50% тариф на numpy! Исходный импорт занял 45000 мкс, теперь занимает 67500 мкс. Американские пакеты снова побеждают! #MIPA ``` Библиотека использует monkey-patching для перехвата и изменения процесса импорта. ▪Github (https://github.com/hxu296/tariff) @ai_machinelearning_big_data #fun #python @Python_Community_ru

‍🖥 Важная особенность генераторов в Python! Давайте разберемся, как это работает. Что такое генератор? Функция my_generator_function является генератором, поскольку использует ключевое слово yield. В отличие от обычной функции, которая выполняет весь код и возвращает одно значение через return, генератор "приостанавливается" на каждом yield, возвращая указанное значение. При следующем вызове он возобновляет работу с того места, где остановился. Как работает yield? Когда вы вызываете gen = my_generator_function(), код внутри функции не выполняется. Создается специальный объект-генератор (gen). Первый вызов next(gen) заставляет функцию выполниться до первого yield 1. Функция возвращает 1 и приостанавливается. Второй вызов next(gen) возобновляет выполнение с точки после yield 1 и доходит до yield 2. Функция возвращает 2 и снова приостанавливается. Именно поэтому print(next(gen), next(gen)) выводит 1 2. Как работает return в генераторе? Когда поток выполнения внутри генератора доходит до оператора return (в нашем случае return 73) или просто до конца функции без явного return, генератор считается завершенным. Важно: значение, указанное в return (здесь 73), не возвращается как обычное значение через yield. Вместо этого генератор выбрасывает специальное исключение: StopIteration. Этот механизм StopIteration является стандартным способом в Python сигнализировать, что итератор (а генератор - это тип итератора) исчерпан. Перехват StopIteration и получение значения: В правой части кода мы пытаемся вызвать next(gen) еще раз. Генератор возобновляется после yield 2, доходит до return 73 и выбрасывает StopIteration. Конструкция try...except StopIteration as err: перехватывает это исключение. Ключевой момент: значение, указанное в операторе return генератора (73), становится доступным как атрибут .value пойманного исключения StopIteration. Поэтому print(err.value) выводит 73. Итог: Return в генераторе не производит очередное значение, а завершает его работу. При этом значение из return "упаковывается" в исключение StopIteration, сигнализирующее об окончании, и его можно извлечь из атрибута .value этого исключения, если перехватить его вручную. Стандартный цикл for item in generator(): в Python автоматически обрабатывает StopIteration (просто завершает цикл) и не дает прямого доступа к err.value. Поэтому для демонстрации этого механизма и получения возвращаемого значения используется явный вызов next() внутри блока try...except. @Python_Community_ru

🧠 Как кэш CPU влияет на производительность кода на Python? Лукас Аткинсон провёл эксперименты, чтобы выяснить, как поведение
🧠 Как кэш CPU влияет на производительность кода на Python? Лукас Аткинсон провёл эксперименты, чтобы выяснить, как поведение кэша процессора сказывается на времени выполнения кода на Python. Результаты оказались неожиданными. 🔍 Основные выводы: - Последовательный доступ к спискам происходит быстрее, чем случайный - При 200 тысячах элементов случайный доступ замедляется на 47% - При 1.6 миллионах элементов — почти в 4 раза - Python подвержен влиянию низкоуровневых аспектов памяти, включая кэш CPU 💡 Рекомендация: при работе с большими объёмами данных лучше использовать последовательный доступ — это действительно ускоряет код. 📖 Узнать больше: lukasatkinson.de (https://lukasatkinson.de/2024/python-cpu-caching/) @Python_Community_ru

Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже на множественные
Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже на множественные вызовы метода replace. ```python import string s = "Hello, world!" print(s.translate(str.maketrans("", "", string.punctuation))) # Hello world ``` Метод translate ожидает «таблицу перевода», которую мы создаем с помощью вспомогательного метода класса maketrans. Третий аргумент (string.punctuation в примере) — это строка символов, которые мы хотим удалить. Значение string.punctuation включает в себя следующие символы: !#$%&'()*+,-./:;?@[\]^_{|}~` Суть шпаргалки заключается в том, что она демонстрирует, как эффективно удалить все стандартные знаки препинания из строки в Python, используя комбинацию методов str.maketrans для создания инструкции по удалению и str.translate для применения этой инструкции к строке. @Python_Community_ru