ch
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

显示更多

📈 Telegram 频道 Python Community 的分析概览

频道 Python Community (@python_community_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 861 名订阅者,在 技术与应用 类别中位列第 10 577,并在 俄罗斯 地区排名第 55 646

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 11 861 名订阅者。

根据 08 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -43,过去 24 小时变化为 1,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 4.98%。内容发布后 24 小时内通常能获得 2.65% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 591 次浏览,首日通常累积 314 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 1
  • 主题关注点: 内容集中在 docker, git, github, контейнер, await 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Python Community RU - СНГ сообщество Python-разработчиков Чат канала: @python_community_chat Сотрудничество: @cyberJohnny и @Sergey_bzd РКН реестр: https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission

凭借高频更新(最新数据采集于 09 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

11 861
订阅者
+124 小时
-117
-4330
帖子存档
🖥 PyRoki — модульный инструмент для оптимизации кинематики роботов На GitHub и в preprint на arXiv появилась новая работа от исследователей из Berkeley — PyRoki (Python Robot Kinematics Toolkit). Это мощный, гибкий и кроссплатформенный инструмент на Python для задач оптимизации в робототехнике. 🔧 Что такое PyRoki? PyRoki — это: - 📦 Модульная архитектура Разделение переменных оптимизации и функций стоимости (costs) позволяет комбинировать задачи IK, планирования траектории, ретаргетинга и многое другое — без повторения кода. - ⚙️ Дифференцируемая кинематика Поддержка URDF-моделей, автоматическое создание collision-примитивов (например, капсул), работа с NumPy и JAX. - 🚀 Поддержка CPU, GPU и TPU Высокая производительность и масштабируемость на любых вычислительных устройствах. - 🧠 Оптимизация на многообразиях (Lie-группы) Встроенный алгоритм Levenberg–Marquardt даёт устойчивую и быструю сходимость даже для сложных конфигураций. 📊 Результаты - Быстрее cuRobo на 1.4–1.7x при решении задач IK в батче. - Более точные результаты при меньших вычислительных затратах. - Интерактивный визуализатор (на базе `viser`) для отладки и анализа. 📁 Примеры использования PyRoki включает в себя готовые сценарии: - инверсная кинематика (IK) - бимануальные манипуляции - мобильные платформы - ретаргетинг движений гуманоидов - учёт столкновений - online-планирование и управление 🚀 Установка git clone https://github.com/chungmin99/pyroki.git cd pyroki pip install -e . Требуется Python 3.12+ (частичная поддержка Python 3.10–3.11). PyRoki — это: - 📐 Удобный фреймворк для исследований в области робототехники. - 🛠️ Подходит как для академических, так и для прикладных задач. - 🌐 Гибкий и масштабируемый — от одного робота до больших motion-баз. Если интересен пример интеграции с ROS, Gazebo или симуляцией цифрового двойника — дай знать, покажу! 🔗 Репозиторий (https://github.com/chungmin99/pyroki) #Python #Robotics #Kinematics #InverseKinematics #MotionPlanning #OpenSource @Python_Community_ru

«Я в режиме реального времени поясняла структуру запросов / ответов в Postman и разбирала документацию в Swagger», — пишет ан
+4
«Я в режиме реального времени поясняла структуру запросов / ответов в Postman и разбирала документацию в Swagger», — пишет аналитик, который прошел наш курс, а потом два технических собеседования в международные компании. Приятно, конечно ❤️ Если в 2025 году вы хотите: — научиться выбирать стиль интеграции под вашу задачу; — начать проектировать с нуля и описывать интеграции в современных стилях (API: REST, SOAP, gRPC и других, + брокеры сообщений); — узнать как правильно собирать требования и моделировать в UML; — подготовиться к собеседованию, решив более 100 заданий; — запустить свой API на Python. Значит наш курс для вас! 🚀 Начните с открытых бесплатных уроков — переходите в бот курса и жмите «Старт» 👇 @studyit_help_bot 🚀 Скидка на курс от канала — 1 000₽ на Stepik по промокоду PYTHONL до конца мая. @Python_Community_ru

🔵Освойте одну из самых востребованных профессий в российском IT в 2025 В OTUS стартует новый поток онлайн-курса «Архитектор
🔵Освойте одну из самых востребованных профессий в российском IT в 2025 В OTUS стартует новый поток онлайн-курса «Архитектор 1С», где вы научитесь проектировать информационные системы, используя продвинутые возможности платформы 1С. 4 месяца обучения и вы сможете: ▫️ Формировать архитектуру окружения 1С, ▫️ Моделировать бизнес-процессы и создавать прототипы разработки ▫️ Проектировать технические проекты в СППР ▫️ Работать с Git, OneScript, Vanessa, SonarCube, Apdex, Grafana ▫️ Устанавливать и настраивать РИБ А еще узнаете, как организовать работу отдела разработки 1С, какие есть виды документации в 1С и какие организационные мероприятия существуют в 1С. 👉 Пройдите короткий тест прямо сейчас: https://clck.ru/3MAonB Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🖥 Как масштабировать Python Task Queue — подробный гайд Когда ваше Python-приложение начинает активно использовать фоновые задачи (email-уведомления, видеообработка, интеграции и т.д.), быстро возникает проблема: очередь задач растёт, задержка увеличивается, пользователи начинают ощущать тормоза. В статье разбирается, как это решать грамотно, автоматически и эффективно. 🎯 Основные проблемы: • Даже при низком CPU задачи могут выполняться с задержкой • Очередь может казаться «тихой», но задачи копятся • Масштабирование вручную по метрикам CPU/памяти — неэффективно • Часто “один жирный воркер” не решает проблему — надо менять подход ⚙️ Как масштабировать: пошагово 1) 🔌 Выбор брокера сообщений • Redis — прост в настройке, отлично работает с Celery и RQ • RabbitMQ — надёжнее (повторы, подтверждения), подходит для критичных задач 2) ⚙️ Настройка воркеров • *Вертикальное масштабирование* — больше процессов внутри одного воркера (в Celery можно concurrency) • *Горизонтальное масштабирование* — запуск множества воркеров на разных инстансах, читающих из одной очереди — универсальное и гибкое решение 3) 📈 Авто-скейлинг по latency, а не CPU • Частая ошибка: масштабировать по CPU • Правильный подход: масштабировать по времени ожидания задач в очереди • Judoscale позволяет автоматизировать масштабирование именно по queue latency • При росте задержки запускаются новые воркеры, при снижении — отключаются 4) 🧠 Fan-Out: разбивай большие задачи Вместо: Одна задача: обработать 10 000 пользователей Правильно: 10 000 задач: по одной на каждого пользователя Преимущества: • Параллельность • Надёжность (ошибки локализуются) • Легче масштабировать обработку 📊 Результаты после внедрения: • Время ожидания задач сократилось с 25 минут до 30 секунд • Масштабирование стало динамичным • Инфраструктура стала дешевле — меньше простаивающих воркеров ✅ Рекомендации: • Используй Redis или RabbitMQ в зависимости от требований • Отдавай предпочтение горизонтальному масштабированию • Следи за latency, а не за CPU • Используй Judoscale для авто-масштабирования • Применяй fan-out для повышения надёжности и скорости 🖥 Ссылка на статью (https://judoscale.com/blog/scaling-python-task-queues) @Python_Community_ru

Как получить карьерный буст и MacBook за подписку В интернете полно курсов по самопиару и карьерному развитию в IT, но все он
Как получить карьерный буст и MacBook за подписку В интернете полно курсов по самопиару и карьерному развитию в IT, но все они не сравнятся с реальными кейсами от действующих практиков. Не нужно покупать дорогие консультации, чтобы перенять чужой опыт — достаточно подписаться на папку, где собралось более 30 лучших экспертов из IT и digital Это люди, которые не только построили успешную карьеру с нуля, но и основали собственные компании. Они собрались, чтобы прокачать тебя в маркетинге и дизайне, а ещё провести розыгрыш. Подпишись на них и получи один из 3 призов: 🥇Главный приз — MacBook Air (M2) 🥈2 место: Яндекс Станция Лайт 2 🥉3 место: Наушники HUAWEI Freebuds 5i Участвуешь? 1. Подпишись на папку 2. Подтверди участие в боте 19 июня в прямом эфире опубликуем итоги розыгрыша!

🧠 Как клонировать голос с помощью Open Source (Coqui TTS) Хочешь, чтобы ИИ говорил твоим голосом? Без подписок, платных API и ограничений? Вот подробная инструкция, как клонировать свой голос с нуля с помощью open-source инструментов: 🔧 Установка sudo apt install ffmpeg pip install TTS soundfile torchaudio gradio git clone https://github.com/coqui-ai/TTS.git cd TTS pip install -e . 🎙️ 1. Подготовка записи голоса Тебе нужен файл .wav: - продолжительность: от 1 минуты - формат: моно, 16 кГц, 16-bit Пример конвертации: ffmpeg -i input.mp3 -ac 1 -ar 16000 output.wav 🧬 2. Генерация эмбеддинга твоего голоса from TTS.tts.configs.xtts_config import XttsConfig from TTS.tts.models.xtts import Xtts config = XttsConfig() model = Xtts.init_from_config(config) model.load_checkpoint("tts_models/multilingual/multi-dataset/xtts_v2") voice_sample = "your_voice.wav" speaker_embedding = model.get_speaker_embedding(voice_sample) 📤 3. Генерация речи с твоим голосом text = "Привет! Я теперь могу говорить твоим голосом." wav = model.tts(text, speaker_embedding=speaker_embedding) model.save_wav(wav, "output.wav") 💻 4. (Опционально) Интерфейс с Gradio import gradio as gr def speak(text): wav = model.tts(text, speaker_embedding=speaker_embedding) path = "generated.wav" model.save_wav(wav, path) return path gr.Interface(fn=speak, inputs=gr.Textbox(), outputs=gr.Audio()).launch() ✅ Быстрый способ (через CLI) tts --model_name "tts_models/multilingual/multi-dataset/xtts_v2" \ --text "Привет, мир!" \ --speaker_wav path/to/your.wav \ --out_path output.wav ⚠️ Важно - 💻 Работает на CPU, но лучше с GPU. - 🌐 Поддерживает русский язык. @Python_Community_ru

🪬 Boto3 — мост между Python и AWS. Эта официальная Python-библиотека предоставляет удобный интерфейс для взаимодействия с се
🪬 Boto3 — мост между Python и AWS. Эта официальная Python-библиотека предоставляет удобный интерфейс для взаимодействия с сервисами AWS — от простых операций с S3 до управления кластерами EC2. После недавнего прекращения поддержки Python 3.8 проект сосредоточился на современных версиях языка. Особенность Boto3 в двухуровневой архитектуре: низкоуровневые клиенты для точного контроля и ресурсные объекты для упрощённого синтаксиса. Документация от AWS включает примеры для всех основных сервисов, что делает интеграцию почти безболезненной. 🤖 GitHub (https://github.com/boto/boto3) @Python_Community_ru

🎮 Oh My ~God~ Git — необычная и полезная игра с открытым исходным кодом, которая помогает разобраться с GIT не через скучные туториалы, а с помощью наглядных карточек и геймплея. 🧠 В процессе ты: • Поймёшь, как устроен GIT под капотом • Научишься работать с ветками, коммитами, merge и rebase • Запомнишь команды на практике, играя 📦 Игра доступна прямо в браузере: [ohmygit.org](https://ohmygit.org/) 💻 Или можно скачать и установить с GitHub: [github.com/git-learning-game/oh-my-git](https://github.com/git-learning-game/oh-my-git) 👾 Подходит как новичкам, так и тем, кто хочет освежить знания в игровой форме. @Python_Community_ru

Тестирование на Python для продвинутых: кейсы, инструменты, ошибки 📅 22 мая в 20:00 — вебинар для тех, кто хочет вывести тес
Тестирование на Python для продвинутых: кейсы, инструменты, ошибки 📅 22 мая в 20:00 — вебинар для тех, кто хочет вывести тестирование на новый уровень. Что обсудим: — как тестировать async-код, базы данных и работу с файлами — частые ошибки: избыточные моки, хрупкие тесты и антипаттерны — инструменты pro-уровня: pytest, tox, coverage и др. — как ускорить прогон без потери качества — реальные кейсы и подходы из продакшена 👨‍💻 Для опытных Python-разработчиков, лидов, архитекторов и всех, кто пишет тесты, но хочет делать это лучше, быстрее и стабильнее. 🔥 Вебинар проходит в преддверии старта курса «Python Developer. Professional». Участникам — скидка на обучение! 🎓 Участие бесплатное: https://clck.ru/3M5kvn Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤖 ACI.dev — Унифицированный доступ AI-агентов к 600+ инструментам ACI (Agent Capability Interface) — это открытая платформа, которая позволяет AI-агентам подключаться к более чем 600 внешним инструментам и API, используя единую инфраструктуру доступа. Система включает поддержку многоарендной архитектуры (multi-tenant), гибкие разрешения и несколько режимов вызова — как через MCP-сервер, так и напрямую через SDK. 🎯 Цель проекта — предоставить ИИ-доступ к реальным действиям в цифровой среде: от отправки писем и управления календарём до взаимодействия с CRM, базами данных, DevOps-инструментами и даже пользовательскими функциями. 🧩 Основные возможности: - 🔌 600+ готовых интеграций Поддержка популярных платформ: Notion, Slack, Google Calendar, GitHub, Discord, Twilio, PostgreSQL и многих других. - 🔐 Разграничение доступа и безопасность Поддержка granular-permissions, токенов доступа, ролей, и подписанных вызовов с проверкой подлинности. - 🧠 Интеграция с AI-агентами Разработано для работы с open-source AI-платформами, включая AutoGen, CrewAI, LangGraph, OpenDevin, Devika и т.д. - 🛠️ Два способа использования 1. MCP Server — единая точка входа, через которую агент может выполнять действия. 2. ACI SDK — локальное подключение и вызов возможностей напрямую из кода. - 🌐 Webhooks и Plugin support Поддержка обратных вызовов и подключения как внешнего плагина к другим системам (например, для LLM-агентов). ACI — это своего рода "операционная система" для ИИ-агентов, позволяющая им действовать в реальном мире с контролем, безопасностью и масштабируемостью. 🔗 Полезные ссылки: - GitHub (https://github.com/aipotheosis-labs/aci) - Документация (https://docs.aci.dev/) @Python_Community_ru

🐍 Задача уровня Pro: декоратор с внутренним состоянием 📌 Задача: Напиши декоратор call_limiter, который: - ограничивает функцию f максимум до n вызовов - после n вызова функция больше не вызывается, а возвращает строку "LIMIT REACHED" Пример использования: @call_limiter(3) def greet(name): return f"Hello, {name}!" print(greet("Alice")) # Hello, Alice! print(greet("Bob")) # Hello, Bob! print(greet("Charlie"))# Hello, Charlie! print(greet("Dave")) # LIMIT REACHED 🎯 Подвохи: - Нужно создать декоратор-фабрику с аргументом n - Внутри должна быть функция с nonlocal, чтобы отслеживать число вызовов - Часто путаются и используют mutable default, что ломает независимость между декорируемыми функциями ✅ Решение: ```python def call_limiter(n): def decorator(func): count = 0 def wrapper(*args, **kwargs): nonlocal count if count >= n: return "LIMIT REACHED" count += 1 return func(*args, **kwargs) return wrapper return decorator ``` 🧪 **Проверка:** ```python @call_limiter(2) def ping(): return "pong" print(ping()) # pong print(ping()) # pong print(ping()) # LIMIT REACHED @call_limiter(1) def echo(msg): return msg print(echo("hi")) # hi print(echo("bye")) # LIMIT REACHED ``` 🧠 **Что проверяет задача:** • Понимание функций высшего порядка • Работа с `nonlocal` и областью видимости • Контроль состояния внутри декоратора • Умение не "засорить" глобальные или общие области @Python_Community_ru

🎭 Pykka — акторная модель для Python без лишних сложности. Этот проект позволяет организовывать конкурентные вычисления без
🎭 Pykka — акторная модель для Python без лишних сложности. Этот проект позволяет организовывать конкурентные вычисления без традиционных проблем с состоянием и блокировками. Вдохновлённый знаменитым Akka для JVM, Pykka предлагает минималистичный подход — никаких супервизоров или распределённых акторов, только чистые принципы обмена сообщениями между изолированными процессами. Инструмент имеет продуманную архитектуру: разработчику достаточно определить поведение акторов, а Pykka возьмет на себя всю работу с очередями и потоками. 🤖 GitHub (https://github.com/jodal/pykka?tab=readme-ov-file) @Python_Community_ru

🧠 Как подготовиться к техническому собеседованию с помощью Если ты собираешься на собеседование в IT и не знаешь, с чего начать, обрати внимание на бесплатный курс от freeCodeCamp (https://www.freecodecamp.org/news/prepare-for-technical-interviews-using-neetcode-150/), который основан на известном списке задач NeetCode 150. ⚙️ Что такое NeetCode 150? • 🟤 Это подборка из 150 задач с LeetCode, охватывающая все необходимые темы: • массивы • строки • хеш-таблицы • деревья и графы • динамическое программирование • стек и очередь • backtracking и двоичный поиск 🎓 Что включает курс freeCodeCamp: • 38 часов подробных видеоуроков • Каждая задача рассматривается шаг за шагом — с объяснением подходов и кода • Языки программирования: Python и JavaScript • Курс полностью бесплатный 📈 Почему это работает: • Все задачи взяты из реальных технических собеседований • Курс построен так, чтобы идти от простого к более сложному • Можно учиться в удобном для себя темпе - Начать можно здесь (https://www.freecodecamp.org/news/prepare-for-technical-interviews-using-neetcode-150) - Видео с разбором вопросов (https://www.youtube.com/watch?v=T0u5nwSA0w0) - Решения задач (https://neetcode.io/practice) Не упусти возможность упорядочить свои знания и уверенно пройти собеседование! @Python_Community_ru

⚡️Создаем собственную нейросеть с помощью PyTorch. Хотите быстро освоить PyTorch и создать свою нейросеть? Мы организовали вебинар, на котором подробно рассмотрим все шаги по созданию ML-модели на практике. Вебинар проведет Владислав Агафонов — ML-инженер, который ранее работал в Yandex и Huawei. Что вас ждет на вебинаре? 🟠Установка PyTorch в Google Colab и настройка работы на бесплатном GPU; 🟠Понимание, что такое тензоры и почему они являются основой всех нейросетей; 🟠Скачивание готового датасета, анализ его структуры и подготовка к обучению; 🟠Изучение использования DataLoader для эффективной загрузки данных; 🟠Пошаговое создание облегченной версии классической свёрточной нейронной сети (CNN); 🟠Обучение и тестирование модели. 🕗 Встречаемся 14 мая в 18:30 по МСК. Будет много практики, ответы на вопросы и полезные советы от эксперта. 😶Зарегистрироваться на бесплатный вебинар (https://r.bothelp.io/tg?domain=intensives_simulative_bot&start=c1717737634212-ds&funnel=web-1405&utm_source=telegram&utm_medium=paid-placement&utm_campaign=pythonl&utm_content=11-05-2025&erid=2VtzqwpEY4C) @Python_Community_ru

Хочешь научиться собирать данные с сайтов как профи? 14 мая в 18:30 МСК — бесплатный вебинар по веб-скрейпингу на Python! 💡
Хочешь научиться собирать данные с сайтов как профи? 14 мая в 18:30 МСК — бесплатный вебинар по веб-скрейпингу на Python! 💡 Что тебя ждёт: На открытом уроке ты узнаешь, как: — работать с библиотеками requests и BeautifulSoup; — автоматизировать сбор данных с динамических сайтов с помощью Selenium; — обходить CAPTCHA и блокировки; — сохранять данные в нужном тебе формате. 📊 Кому будет полезно: Разработчикам с опытом от 1 года и специалистам, работающим с данными, для автоматизации сбора и обработки информации с внешних источников. 🔥 Вебинар проходит в преддверии старта курса «Python Developer. Professional». Участникам — скидка на обучение!Регистрируйся прямо сейчас — не упусти шанс прокачаться в востребованном навыке: https://clck.ru/3M2FbU Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🖥 systemd-pilot (https://github.com/mfat/systemd-pilot) — это программа для рабочего стола, предназначенная для управления с
🖥 systemd-pilot (https://github.com/mfat/systemd-pilot) — это программа для рабочего стола, предназначенная для управления сервисами systemd в системах GNU/Linux! 🌟 По сути, это графический интерфейс для команд systemctl. С его помощью можно просматривать и контролировать системные сервисы, быстро создавать новые сервисы, а также запускать, останавливать и перезапускать их. Приложение занимает мало места и написано всего одним Python-скриптом. Кроме того, есть возможность искать сервисы по их имени. 🔐 Лицензия: GPL-3.0 🖥 Github (https://github.com/mfat/systemd-pilot) @Python_Community_ru

🖥 Краткое руководство по RegEx в Python 📦 Импорт модуля: import re 🔍 Основные функции модуля re re.search(pattern, string) # Находит первое совпадение в любой части строки re.match(pattern, string) # Проверяет совпадение только в начале строки re.fullmatch(pattern, string) # Проверяет, соответствует ли вся строка шаблону полностью re.findall(pattern, string) # Возвращает список всех совпадений re.finditer(pattern, string) # То же самое, но возвращает итератор с объектами Match re.sub(pattern, repl, string) # Заменяет найденные по шаблону участки re.split(pattern, string) # Делит строку по шаблону # 🧠 Основы синтаксиса шаблонов | Шаблон | Значение | |---------|-----------------------------------| | . | Любой символ, кроме символа новой строки | | ^ | Начало строки | | $ | Конец строки | | * | 0 или более повторений | | + | 1 или более повторений | | ? | 0 или 1 повторение | | {n} | Ровно n повторений | | {n,} | n или больше повторений | | {n,m} | От n до m повторений | | [] | Класс символов | | [^] | Отрицание класса символов | | | | Логическое ИЛИ (`a|b`) | | () | Группа захвата | | \ | Экранирование специальных символов| 💡 Примеры re.search(r'\d+', 'ID=12345') # Найдёт '12345' (одна или более цифр) re.match(r'^\w+$', 'hello_world') # Проверяет, что вся строка состоит из букв, цифр или _ re.findall(r'[A-Z][a-z]+', 'Mr. Smith and Dr. Brown') # ['Smith', 'Brown'] re.sub(r'\s+', '-', 'a b c') # Результат: 'a-b-c' re.split(r'[;,\s]\s*', 'one, two;three four') # ['one', 'two', 'three', 'four'] 🎯 Работа с группами захвата text = 'Name: John, Age: 30' match = re.search(r'Name: (\w+), Age: (\d+)', text) if match: print(match.group(1)) # John print(match.group(2)) # 30 Группы можно называть: pattern = r'(?P<name>\w+): (?P<value>\d+)' match = re.search(pattern, 'score: 42') match.group('name') # 'score' match.group('value') # '42' 🧱 Сложные шаблоны pattern = r'\b(?:https?://)?(www\.)?\w+\.\w+\b' text = 'Visit https://example.com or www.test.org' re.findall(pattern, text) # [['www.'], ['www.']] ⚠️ Полезные рекомендации • Используйте префикс r'' перед шаблонами, чтобы не нужно было экранировать обратный слэш \ • re.compile(pattern) помогает повысить скорость при многократном использовании шаблона • Лучше использовать re.search вместо re.match, так как он ищет совпадение в любом месте строки ✅ Быстрая проверка шаблонов 📍 Онлайн-сервисы для тестирования: - https://regex101.com/ - https://pythex.org/ Если нужна отдельная шпаргалка по re.sub с использованием лямбда-функций, замен и функций внутри, ставь лайк 👍 @Python_Community_ru

🐍 Задача с подвохом: Декораторы и изменяемые объекты Условие: Что выведет следующий код и почему? def memoize(fn): cache = {} def wrapper(arg): if arg in cache: print("Из кэша") return cache[arg] else: result = fn(arg) cache[arg] = result return result return wrapper @memoize def add_to_list(val, lst=[]): lst.append(val) return lst res1 = add_to_list(1) res2 = add_to_list(2) res3 = add_to_list(1) print(res1) print(res2) print(res3) ❓ Вопрос: Что именно выведется? В чём здесь двойная ловушка? 🔍 Анализ: Сначала кажется, что: 1. add_to_list(1) вернёт [1]. 2. add_to_list(2) вернёт [2]. 3. add_to_list(1) либо вызовет функцию снова, либо вернёт результат из кэша. Но есть два подвоха: Подвох №1: изменяемый аргумент по умолчанию Аргумент lst=[] создаётся один раз при определении функции. Все вызовы без передачи списка будут использовать один и тот же список. Подвох №2: кэширование по ключу Декоратор memoize сохраняет результат в кэше по ключу arg. Но функция возвращает список, который изменяется при каждом вызове. Даже если результат берётся из кэша, вы получите ссылку на тот же список, который менялся между вызовами! 🧮 Что реально произойдёт: - `res1 = add_to_list(1)` → функция вызвана, список становится `[1]`. - `res2 = add_to_list(2)` → функция вызвана снова с другим аргументом, список теперь `[1, 2]`. - `res3 = add_to_list(1)` → аргумент `1` есть в кэше, сработает ветка `print("Из кэша")`, и вернётся ссылка на тот же изменённый список. 🔢 Итог: ``` [1, 2] [1, 2] Из кэша [1, 2] ``` Все переменные указывают на один и тот же изменённый список. 💥 Почему это важно: 1️⃣ Изменяемые аргументы по умолчанию сохраняются между вызовами функции. 2️⃣ Кэширование изменяемых объектов может привести к неожиданным результатам: возвращается не неизменяемый результат, а ссылка на объект, который может изменяться позже. 🛡️ Как исправить: 1️⃣ Использовать `lst=None` и создавать новый список внутри функции: ```python def add_to_list(val, lst=None): if lst is None: lst = [] lst.append(val) return lst ``` 2️⃣ Если кэшировать изменяемые объекты, лучше возвращать их копии: ```python import copy cache[arg] = copy.deepcopy(result) ``` ✅ Итог: Декораторы вместе с изменяемыми аргументами — это ловушка даже для опытных программистов. Особенно, если изменяемые объекты кэшируются и потом меняются за кулисами. @Python_Community_ru

📡 FISSURE — это фреймворк, предназначенный для анализа и обратного проектирования радиосигналов. Этот проект с открытым исхо
📡 FISSURE — это фреймворк, предназначенный для анализа и обратного проектирования радиосигналов. Этот проект с открытым исходным кодом объединяет различные инструменты для работы с RF-сигналами: от их обнаружения и классификации до проведения атак и автоматизированного тестирования. Программа поддерживает популярное SDR-оборудование и позволяет создавать распределённые сенсорные узлы для задач радиомониторинга. Проект активно развивается, и в 2024 году в него добавили анализ Z-Wave и автоматические триггеры для проведения атак. 🤖 GitHub (https://github.com/ainfosec/FISSURE) @Python_Community_ru

🛠 Werkzeug — это набор инструментов для WSGI-приложений на Python. Хотя все обсуждают Flask, его основа — библиотека Werkzeu
🛠 Werkzeug — это набор инструментов для WSGI-приложений на Python. Хотя все обсуждают Flask, его основа — библиотека Werkzeug — остается менее заметной. Этот middleware-инструмент лежит в базе многих Python-фреймворков, обеспечивая основные функции для работы с HTTP-запросами, маршрутизацией и сессиями без навязывания конкретной архитектуры. В Werkzeug отсутствуют ORM и шаблонизатор, но присутствуют: ▪️Интерактивный отладчик с REPL прямо в браузере ▪️Гибкая система маршрутизации (позже использованная в Flask) ▪️WSGI-сервер для разработки с поддержкой горячей перезагрузки 🤖 GitHub (https://github.com/pallets/werkzeug) @Python_Community_ru