uk
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 день
Архів дописів
🖥 Полезный хак для Python разработчиков. import dis def explain_bytecode(fn): print(f"Анализ байткода функции: {fn.__name__}\n") dis.dis(fn) Пример: def tricky(x): return x * 2 + 1 if x > 0 else x - 1 explain_bytecode(tricky) Этот хак показывает байткод Python-функции, позволяя заглянуть под капот интерпретатора. Используется для: • отладки «странного» поведения функций • анализа производительности на уровне Python VM • изучения, как Python интерпретирует тернарные выражения, замыкания, генераторы и т. д. Модуль dis встроен в стандартную библиотеку и часто игнорируется — но это мощный инструмент для продвинутых разработчиков и авторов интерпретаторов. @Python_Community_ru

🎮 Учимся Python прямо в бою — в Steam бесплатно раздают CodeStrike! Это не просто игра — это шпионский экшен, где ты решаешь
+4
🎮 Учимся Python прямо в бою — в Steam бесплатно раздают CodeStrike! Это не просто игра — это шпионский экшен, где ты решаешь всё кодом. В CodeStrike ты — элитный агент, действующий в мире, захваченном ИИ и алчными корпорациями. 💻 Что тебя ждёт: • Пишешь Python-код • Ломаешь системы, обходишь ловушки, взрываешь и взламываешь • Программируешь поведение героя в реальном времени • Участвуешь в гонках, сражениях и выживании — только с помощью кода Это как если бы *Metal Gear* встретился с *LeetCode* — но весело. 🐍 Прокачай Python, даже не замечая, как учишься. ⚡ Вкатиться можно здесь: https://store.steampowered.com/app/3444170/CodeStrike__Python_Practice_Adventure_Game/ @Python_Community_ru

🚨 Атака на PyPI, npm и RubyGems: сотни вредоносных пакетов в официальных реестрах 🔍 Исследователи обнаружили массовую кампа
🚨 Атака на PyPI, npm и RubyGems: сотни вредоносных пакетов в официальных реестрах 🔍 Исследователи обнаружили массовую кампанию по размещению вредоносных библиотек в популярных экосистемах: 🧪 Что произошло: • На npm опубликованы фейковые версии библиотек вроде Hardhat, крадущие приватные ключи и .env • В PyPI появились клоны requests, urllib3 и др., с вредоносными вставками • В RubyGems — более 700 пакетов, использующих тайпосквоттинг (`activesupportt`, httpartyy и т.д.) 🎯 Цель — разработчики. Пакеты собирают: – мнемоники – приватные ключи – конфиги AWS/GCP – системную информацию 🛡 Что делать: – Проверяй названия пакетов (тайпосквоттинг — главный приём) – Запускай pip audit, npm audit, bundler audit – Используй виртуальные окружения и минимум прав – Подпиши зависимости, где это возможно (например, через Sigstore) 📌 Подробнее (https://thehackernews.com/2025/06/malicious-pypi-npm-and-ruby-packages.htm) @Python_Community_ru

🤖 ReasonFlux-Coder — ИИ, который пишет код и сразу проверяет его Новая серия моделей от команды ReasonFlux научилась не толь
+1
🤖 ReasonFlux-Coder — ИИ, который пишет код и сразу проверяет его Новая серия моделей от команды ReasonFlux научилась не только писать код, но и автоматически генерировать юнит-тесты. Это стало возможно благодаря их алгоритму CURE — модель учится программировать и проверять себя одновременно. 💡 Что внутри: 🧠 ReasonFlux-Coder-7B и 14B Пишут код лучше, чем другие модели такого же размера: Qwen Coders, DeepSeek, Seed-Coders. Без проблем работают в пайплайнах с агентами и умеют масштабироваться на этапе запуска. 🧪 ReasonFlux-Coder-4B (Long-CoT) Модель с расширенным рассуждением (Chain-of-Thought). • Обходит Qwen3-4B • Создаёт юнит-тесты с эффективностью 64.8% • Может использоваться как reward-модель в обучении с подкреплением 📌 Зачем это нужно: – для автотестирования кода – для CICD пайплайнов – для агентных систем, которые сами проверяют свои решения 📄 Подробности: https://huggingface.co/Gen-Verse/ReasonFlux-Coder-14B @Python_Community_ru

🖥 Physics Simulations Набор симуляций физических явлений, написанных на Python с использованием Pygame. Эти симуляции создавались в образовательных целях и охватывают различные концепции, включая: - Законы Ньютона - Гравитацию - Силы и трение - Простую гармоническую модуляцию - И многое другое Для запуска симуляций необходимо установить зависимости: pip install -r requirements.txt Затем можно запустить нужный скрипт напрямую, например: python gravity_sim.py Каждый файл представляет отдельную симуляцию, сопровождаемую визуализацией с помощью Pygame. 📌 Github (https://github.com/gemsjohn/physics-sims) @Python_Community_ru

МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатное. В программе — спикеры рос
МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатное. В программе — спикеры российского и международного ИИ-рынка, лидеры бигтехов и ученые. Тебя ждут 4 трека и 40+ докладов. Какие темы будем обсуждать: — GPT для роботов: как ИИ учится взаимодействовать с реальным миром. — Мультиагенты — главный AI-тренд 2025. Речь не просто о чат-ботах, а о системах, которые умеют спорить, сотрудничать и достигать целей. — Автоматизация архитектурных аудитов с помощью ИИ: создание архитектурного datalake для сбора данных из Git, Kubernetes, мониторинга и других источников. — Новая архитектура под AI: что приходит на смену микросервисам и как архитектор становится дизайнером когнитивного интерфейса. — Архитектура «as code»: как автоматизировать проверку актуальности схем и генерировать их из реальной инфраструктуры, чтобы разработка всегда соответствовала замыслу архитектора. — Разбор RAG: что это, зачем нужно, архитектурные подходы и их слабые места, как измерять качество и избегать ложных метрик. Среди спикеров: Иван Оселедец (AIRI), Пабло дель Веккио (NTT DATA), Кен Чжун Ли (Kyung Hee University), Алексей Друца (Яндекс), Александр Абрамов (Сбер), Павел Бабин (MWS GPT), Валентин Малых (MTS AI), Антон Скогорев (Т-Банк), Артем Якимчук (Сколтех) и другие эксперты. Тебе точно стоит быть, если ты: — разработчик, архитектор или технический руководитель; — хочешь понять, что реально работает, а что — хайп. Когда: 6 июня Где: Москва, МТС Live Холл и онлайн Регистрация по ссылке.

🕵️‍♂️ ExeRay — статический анализатор PE-файлов на Python ExeRay — это удобный инструмент для реверс-инженеров, исследователей безопасности и malware-аналитиков. Он проводит статический анализ исполняемых файлов .exe (PE-файлов) и визуализирует их структуру в удобной форме. 🧩 Что умеет ExeRay: ✅ Анализировать PE-файл и извлекать: - Заголовки, секции, импорты/экспорты - Таблицы ресурсов - Используемые API и библиотеки - Suspicious patterns и аномалии ✅ Генерировать отчёт в HTML ✅ Работает полностью офлайн ✅ Поддержка анализа несколькими методами (pefile + custom парсеры) 📦 Пример использования: python main.py -f malware.exe После чего ты получаешь красивый и подробный отчёт по всем ключевым параметрам PE-файла. 💻 Технологии: - Python 3 - pefile, matplotlib, pyvis для графов зависимостей - Простая CLI и понятный код — легко расширить под свои задачи 🧠 Кому подойдёт: - Reverse Engineers - Malware Analysts - Red/Blue Teams - Python-разработчикам, интересующимся PE-структурой и безопасностью 🔥 Если ты работаешь с .exe, и хочешь быстро понять, что внутри — ExeRay сэкономит часы ручного анализа. 📁 Репозиторий (https://github.com/MohamedMostafa010/ExeRay): @Python_Community_ru

🐍 Ошибка с изменяемыми значениями по умолчанию»** 🎯 Цель: Найти и объяснить баг, который не вызывает исключений, но ломает логику приложения 📍 Ситуация: У тебя есть функция, которая логирует события с метаданными. По умолчанию метаданные можно не передавать: def log_event(event, metadata={}): metadata["event"] = event print(metadata) На первый взгляд — всё работает. Но при многократных вызовах функции происходит что-то странное: log_event("start") log_event("stop") log_event("error", {"code": 500}) log_event("retry") 👀 Вывод: {'event': 'start'} {'event': 'stop'} {'code': 500, 'event': 'error'} {'code': 500, 'event': 'retry'} 🔍 Что пошло не так? Почему code: 500 появляется там, где его быть не должно? 🧩 Задача: 1. Найди и объясни источник бага 2. Почему Python не выбрасывает ошибку? 3. Как проверить, что дефолтный аргумент сохраняет состояние между вызовами? 4. Как это исправить безопасно и "по питоновски"? 5. Где ещё может проявиться аналогичный эффект? 🛠 Разбор и решение: 🔸 Причина: Изменяемое значение (`dict`) используется как значение по умолчанию. В Python значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове. То есть metadata={} создаётся один раз и сохраняется между вызовами, если параметр не передан. 🔸 Проверка: def f(d={}): print(id(d)) d["x"] = 1 print(d) f() f() Вы увидишь одинаковые id(d) — значит, используется тот же объект. 🔸 Решение (правильный способ): def log_event(event, metadata=None): if metadata is None: metadata = {} metadata["event"] = event print(metadata) Теперь при каждом вызове создаётся новый словарь, и code: 500 не "протекает" в следующие вызовы. 🔸 Где ещё встречается: - Списки: items=[] - Множества: visited=set() - Объекты пользовательских классов 📌 Вывод: Изменяемые значения по умолчанию — одна из самых частых ошибок в Python. Она не вызывает исключений, но может незаметно повредить данные. Всегда используй None + инициализацию внутри функции для изменяемых типов. @Python_Community_ru

🎯 5 ИИ-проектов, которые ты можешь собрать за выходные Хочешь прокачать навыки ML и Python без математики и Kaggle? Лови 5 г
🎯 5 ИИ-проектов, которые ты можешь собрать за выходные Хочешь прокачать навыки ML и Python без математики и Kaggle? Лови 5 готовых идей, которые можно собрать за 1–2 дня: 🔹 Голосовой ассистент — Whisper + GPT + озвучка 🔹 Чат-бот для PDF — LangChain + FAISS + OpenAI 🔹 Генератор картинок — Stable Diffusion + Gradio 🔹 Подписи к фото — BLIP + HuggingFace 🔹 TL;DR бот — BART или GPT для суммаризации текста ✅ Примеры кода ✅ Деплой на HuggingFace / Streamlit ✅ Всё реально собрать за выходные 📎 Забирай гайд (https://uproger.com/5-ai-proektov-kotorye-ty-mozhesh-sobrat-za-vyhodnye-na-python/)— и добавь проекты в резюме: «AI developer: checked» @Python_Community_ru

🐍 Python-библиотеки для Linux-администраторов Набор must-have инструментов, которые помогут автоматизировать системные задачи, управлять файлами, процессами и сетью: 🔸 os — работа с файловой системой, путями, переменными окружения https://docs.python.org/3/library/os.html 🔸 subprocess — запуск внешних команд и управление ими https://docs.python.org/3/library/subprocess.html 🔸 psutil — мониторинг процессов, ресурсов, дисков, сети https://pypi.org/project/psutil/ 🔸 platform — информация об ОС, архитектуре, версии Python https://docs.python.org/3/library/platform.html 🔸 socket — сетевые соединения и сокеты https://docs.python.org/3/library/socket.html 🔸 pwd — доступ к информации о пользователях Unix https://docs.python.org/3/library/pwd.html 🔸 pathlib — удобная работа с путями в ООП-стиле https://docs.python.org/3/library/pathlib.html 🔸 shutil — копирование, удаление, архивация файлов и директорий https://docs.python.org/3/library/shutil.html 🔸 tarfile — создание и извлечение `.tar`-архивов https://docs.python.org/3/library/tarfile.html 📦 Эти модули — основа для написания удобных и мощных CLI-утилит, скриптов и системных инструментов. @Python_Community_ru

🎙️ Voice Extractor — мощный open-source инструмент для извлечения и разметки голоса из многофайлового аудио Если у тебя есть
🎙️ Voice Extractor — мощный open-source инструмент для извлечения и разметки голоса из многофайлового аудио Если у тебя есть подкасты, интервью или многоголосые записи — этот инструмент выделит каждого говорящего и превратит всё в чистые датасеты для TTS или анализа. 🔧 Что умеет: • Диаризация: разделение голосов с помощью Pyannote • Удаление перекрытий: исключает участки с одновременной речью • Транскрипция: генерирует текст аудио • Изоляция голоса: можно вырезать только одного говорящего • Многоязычность: работает не только с английским 🎯 Зачем использовать: • Создание кастомных TTS-моделей • Анализ подкастов, лекций и интервью • Построение голосовых ассистентов 🚀 Как запустить: git clone https://github.com/ReisCook/Voice_Extractor.git cd Voice_Extractor pip install -r requirements.txt python extract_voice.py --file_path your_audio_file.mp3 📎 GitHub: https://github.com/ReisCook/Voice_Extractor @Python_Community_ru

🖥 Гайд по ускорению Python, который реально стоит прочитать 🔥 Без лишней теории — только рабочие практики, которые используют разработчики в боевых проектах. Внутри: • Как искать bottleneck'и и профилировать код • Где и когда использовать Numba, Cython, PyPy • Ускорение Pandas, NumPy, переход на Polars • Асинхронность, кеши, JIT, сборка, автопрофилировка — всё по полочкам • Только нужные инструменты: scalene, py-spy, uvloop, Poetry, Nuitka ⚙️ Написано просто, чётко и с прицелом на production. 📌 Полная версия онлайн (https://uproger.com/optimizciyaiuskoreniecodanapython/) @Python_Community_ru

🖥 Хитрая задача на Python для продвинутых: словарь, который работает как список Представь структуру данных, которая: • работает как dict — доступ по ключу • работает как list — доступ по индексу • сохраняет порядок вставки • поддерживает .index(key) и .key_at(i) 📌 Задача: Реализуй класс IndexedDict, который делает всё это. 🔍 Пример использования: d = IndexedDict() d["a"] = 10 d["b"] = 20 d["c"] = 30 print(d["a"]) # 10 print(d[0]) # 10 print(d[1]) # 20 print(d.key_at(1)) # "b" print(d.index("c")) # 2 for k in d: print(k, d[k]) # перебор по ключам ⚠️ Подвох: • Просто наследовать dict не получится — d[0] будет интерпретироваться как ключ, а не индекс • Придётся реализовать двойную логику доступа вручную • Нужно корректно поддержать __iter__, __getitem__, __len__ и др. ✅ Решение: ```python from collections.abc (collections.abc) import MutableMapping class IndexedDict(MutableMapping): def __init__(self): self._data = {} self._keys = [] def __getitem__(self, key): if isinstance(key, int): real_key = self._keys[key] return self._data[real_key] return self._data[key] def __setitem__(self, key, value): if key not in self._data: self._keys.append(key) self._data[key] = value def __delitem__(self, key): if key in self._data: self._keys.remove(key) del self._data[key] def __iter__(self): return iter(self._keys) def __len__(self): return len(self._data) def index(self, key): return self._keys.index(key) def key_at(self, idx): return self._keys[idx] ``` 📈 Зачем это нужно: • Отличная тренировка на переопределение магических методов • Часто встречается в фреймворках (Pandas, SQLAlchemy) • Тестирует знание ABC-классов (`collections.abc.MutableMapping`) • Полезно для построения кастомных структур данных Хочешь версию с `__contains__`, `__reversed__`, типизацией и сериализацией — пиши 💬 @Python_Community_ru

🚀 TG_AutoPoster — бот для автоматической пересылки постов из групп ВКонтакте в ваш Telegram: канал, чат или личку. 📌 Что ум
🚀 TG_AutoPoster — бот для автоматической пересылки постов из групп ВКонтакте в ваш Telegram: канал, чат или личку. 📌 Что умеет: • Автоматически публикует записи из заданных групп ВК в Telegram • Настраивается через файл config.yaml: логин/пароль или токен VK + данные Telegram API • Поддерживает прокси (SOCKS5) — для обхода блокировок • Гибко настраиваемый интервал проверки новых постов (по умолчанию — 1 час) • Фильтрует записи по чёрному списку и стоп-словам • Добавляет заголовки и футеры с поддержкой Markdown • Работает в Docker — легко разворачивается на сервере TG_AutoPoster — готовое решение для автоматического кросспостинга из ВК в Telegram 💬 ▪ Github (https://github.com/qwertyadrian/TG_AutoPoster) @Python_Community_ru

🖥 Топ Python-библиотек для работы с PDF Работаешь с PDF в Python? Вот подборка лучших библиотек, которые помогут извлекать текст, редактировать, создавать и анализировать PDF-документы. Каждая из них имеет свои сильные стороны 👇 📌 PyPDF2 — для чтения, разделения, объединения, поворота и модификации PDF 🔗 https://github.com/py-pdf/pypdf ⛏ PDFMiner — извлекает текст, структуру и метаинформацию из PDF (в том числе со шрифтами и координатами) 🔗 https://github.com/pdfminer/pdfminer.six 📊 ReportLab — создание PDF-файлов с графиками, таблицами, стилями и вёрсткой 🔗 https://www.reportlab.com/opensource/ 🌐 PyPDFium2 — быстрый рендеринг и извлечение изображений с помощью движка PDFium 🔗 https://pypi.org/project/pypdfium2/ 🛠 pdfplumber — удобное извлечение текста, таблиц и координат объектов 🔗 https://github.com/jsvine/pdfplumber 📄 PyMuPDF (fitz) — быстрая и мощная библиотека для анализа, рендеринга и аннотирования PDF 🔗 https://github.com/pymupdf/PyMuPDF 🔜 Примеры по работе с библиотеками (https://uproger.com/luchshie-python-bibliotek-dlya-raboty-s-pdf/) Используй их вместе или по отдельности — в зависимости от того, нужно ли тебе распарсить текст, извлечь таблицу, отрендерить страницу или сгенерировать отчёт. #Python #PDF #PyPDF2 #PDFMiner #ReportLab #pdfplumber #PyMuPDF #PyPDFium2 #DevTools #PythonDev #OpenSource @Python_Community_ru

🧪 Microsoft представляет Pyrona — экспериментальный проект для безопасной конкуренции в Python! 🔧 Разработан в рамках Project Verona, Pyrona исследует, как принципы владения и управления памятью (в духе Rust) можно адаптировать для динамического языка, такого как Python. 🌀 Что такое Pyrona? • Прототип модифицированного Python без GIL (Global Interpreter Lock) • Использует идеи из Verona и FrankenScript — toy-языка с проверками владения и безопасности • Вводит динамическое региональное владение и глубокую неизменяемость объектов 🚀 Зачем это нужно? С приближением PEP 703 (Python без GIL) возникает угроза гонок данных. Pyrona предлагает решение: ✅ Безопасная многопоточность ✅ Динамические гарантии корректности ✅ Поддержка привычной экосистемы Python 🔍 Детали: • Поддерживает эксперименты с субинтерпретаторами (PEP 684) • Публикация на PLDI 2025: *Dynamic Region Ownership for Concurrency Safety* • Активное участие Гвидо ван Россума и команды Faster CPython 🧠 Pyrona — это не продакшен-язык, а платформа для будущего безопасного и многопоточного Python. 🔗 Подробнее (https://microsoft.github.io/verona/pyrona.html) 🔗 Github (https://github.com/microsoft/verona/) @Python_Community_ru

🚀 DeerFlow — Open‑Source фреймворк для Deep Research от ByteDance 🌟 Что такое DeerFlow? DeerFlow (Deep Exploration and Efficient Research Flow) — это модульный multi-agent фреймворк с открытым исходным кодом, созданный для автоматизации глубоких исследовательских процессов. Он сочетает работу с LLM, веб-поиск, краулинг и выполнение Python-кода :contentReference[oaicite:0]{index=0}. 🧱 Основные особенности - Multi-agent архитектура Координатор, Планировщик, Исследователь, Кодер, Репортер и даже голосовой модуль — каждый агент выполняет свою задачу в пайплайне исследования :contentReference[oaicite:1]{index=1}. - Интеграция инструментов Встроенный веб-поиск (Tavily, DuckDuckGo, Brave, arXiv), web scraping через Jina, Python REPL для исполнения кода, генерация отчетов и даже автоматизированные подкасты при помощи TTS :contentReference[oaicite:2]{index=2}. - Human‑in‑the‑loop Возможность ставить задачи и править планы вручную — обеспечивается контроль на каждом этапе :contentReference[oaicite:3]{index=3}. - Генерация конечного контента Полученные данные консолидируются в отчеты (Markdown, PPT), синтезируются в речь (подкасты), экспортируются — всё автономно. ⚙️ Github (https://github.com/bytedance/deer-flow) @Python_Community_ru

🛡 StarGuard — умный аудит GitHub-репозиториев прямо из консоли Открытый проект — это мощный CLI-инструмент на Python, который автоматически анализирует open-source репозитории и помогает выявить: 🔸 фальшивые звёзды 🔸 всплески активности 🔸 опасные зависимости 🔸 лицензии с подвохом 🔸 подозрительный код и токсичных контрибьюторов 📊 Что делает StarGuard ✅ Обнаруживает аномалии звёзд — Вычисляет резкие всплески популярности с помощью BurstDetector и медианного отклонения. — Определяет подозрительных пользователей с «пустыми» профилями и новыми аккаунтами. ✅ Анализирует зависимости и SBOM — Поддержка PyPI, npm, Maven, Go, Ruby — Предупреждает об unpinned-пакетах и git-зависимостях ✅ Проверяет лицензии — Выявляет несовместимости (например, AGPL внутри MIT) — Предупреждает о скрытых ограничениях ✅ Оценивает контрибьюторов — Проверяет концентрацию коммитов — Определяет "одиночек", на которых держится проект ✅ Сканирует код на опасные паттерны — Обнаруживает eval, скрытые майнеры, необфусцированные ключи 🚀 Как использовать python -m starguard.cli owner/repo --format markdown --plot stars.png 🔹 Без GitHub-токена работает, но лимит — 60 запросов/час 🔹 С GITHUB_TOKEN — до 5000 запросов 🎯 Кому полезно • DevOps-командам — для верификации OSS-зависимостей • Безопасникам — для быстрой проверки на supply chain угрозы • Инвесторам — чтобы не попасть на проекты с "накрученной" популярностью • Open Source авторам — для прозрачности и Trust Badge 🔗 GitHub (https://github.com/m-ahmed-elbeskeri/Starguard) 💡 Инструмент, который показывает, что за красивыми графиками звёзд часто стоит маркетинг, а не код. Умей фильтровать — ставь охрану у репозитория. @Python_Community_ru

🐍 Задача с подвохом: mutable default arguments в Python 🔹 Уровень: Advanced 🔹 Темы: изменяемые аргументы по умолчанию, функции, ловушки с list и dict 📌 Условие Что выведет следующий код? def append_to_list(value, my_list=[]): my_list.append(value) return my_list print(append_to_list(1)) print(append_to_list(2)) print(append_to_list(3)) ❓ Вопросы 1. Почему результат выглядит неожиданно? 2. Как исправить это поведение? 3. Когда стоит использовать изменяемые аргументы по умолчанию — если вообще стоит? 🔍 Разбор ✅ Ожидаемый вывод: [1] [1, 2] [1, 2, 3] 🔧 Почему так происходит - Аргументы по умолчанию вычисляются один раз — во время определения функции, а не при каждом вызове. - Значение my_list=[] создаётся один раз и затем используется повторно при всех вызовах. - Все вызовы append_to_list изменяют один и тот же список. ⚠️ Подвох Это один из самых коварных багов в Python, особенно среди начинающих — кажется, что my_list должен быть новым на каждый вызов, но это не так. 🧠 Вывод - Никогда не используй изменяемые типы (list, dict, set) как значения по умолчанию. - Вместо этого используй None и создавай новый объект вручную: def append_to_list(value, my_list=None): if my_list is None: my_list = [] my_list.append(value) return my_list ✅ Тогда вывод будет: [1] [2] [3] 📌 Это правило относится ко всем изменяемым типам: [], {}, set() и кастомные классы. @Python_Community_ru