Python Community
11.9K subscribers
1.39K photos
115 videos
15 files
916 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
🚀 django-keel - мощный стартовый шаблон для Django-проектов

💡 Что это такое
Готовый современный каркас для Django-приложений, который позволяет запускать новый проект за минуты — с правильной архитектурой, CI, Docker и продуманной конфигурацией.

🔥 Что внутри
- Поддержка Python 3.12+ и Django 5.2+
- Несколько видов проектов: SaaS, API-backend, web-app, internal tools
- Docker + Docker Compose
- Настроенные линтеры, тесты, coverage и GitHub Actions
- 12-factor конфигурация, разделённые settings (dev/test/prod)
- Варианты API: DRF или GraphQL
- Поддержка фронта: Next.js или HTMX + Tailwind

🎯 Почему стоит использовать
- Экономит недели рутинной настройки
- Даёт единообразную и поддерживаемую архитектуру
- Ускоряет разработку MVP, внутренних сервисов и SaaS-продуктов

🛠 Быстрый старт

copier copy gh:CuriousLearner/django-keel my-project


Репозиторий: https://github.com/CuriousLearner/django-keel

@Python_Community_ru
🔥3
🚀 GigaChat Ultra & Lightning — новые MoE-модели от Сбера

💡 Что это такое
Две открытые (https://ria.ru/20251120/sber-2056388219.html) модели нового поколения, обученные с нуля — без чужих весов. Созданы, чтобы ускорять разработку, уменьшать рутину и быть удобным напарником для разработчиков.

🔥 Что внутри
- Ultra: 702B параметров, контекст до 131k, стабильная работа экспертов
- Lightning: 10B параметров, контекст до 256k, лёгкая и быстрая
- Генерация нескольких токенов одновременно
- Экономия памяти, оптимизация KV-кеша
- Совместимость с Hugging Face, vLLM и SGLang

🎯 Почему стоит использовать
- Сбер снимает часть технических забот, чтобы сосредоточиться на экспериментах
- Ускоряет локальное прототипирование и работу с AI-помощниками
- Подходит для масштабных решений и небольших проектов

@Python_Community_ru
👍1
🚀 myfy - модульный Python-фреймворк с фронтендом «из коробки»

Зачем он нужен: FastAPI - идеален для API, но без нормального фронта.

myfy берёт лучшее из FastAPI и добавляет полноценную модульность, DI и встроенный UI.

🔥 Главное
- Модульная архитектура с жизненным циклом (`start/stop`)
- Type-based DI без скрытой магии
- Фронтенд сразу из коробки:
Jinja2 + DaisyUI + Tailwind + Vite + HMR
Можно делать UI без React/Vue, идеально для внутренних тулов
- Чистая структура проекта, минимум бойлерплейта

🚀 Быстрый старт

pip install myfy
myfy init
myfy frontend init
myfy run


https://github.com/psincraian/myfy

@Python_Community_ru
🔥3
🔥 10 однострочных Python-функций, которые экономят время каждый день

Держи небольшой набор из 10 функций-однострочников, которые полезно просто закинуть в свой utils.py.
Они помогают быстро работать со списками, файлами, JSON, статистикой и частотами, без лишнего шума в коде.
Скопируй блок целиком и используй нужные функции по месту.


from pathlib import Path
from collections import Counter
import json, statistics as stats

chunks = lambda it, n: [it[i:i + n] for i in range(0, len(it), n)]

flatten = lambda lst: [x for sub in lst for x in sub]

unique = lambda seq: list(dict.fromkeys(seq))

sliding = lambda it, n: [it[i:i + n] for i in range(len(it) - n + 1)]

freqs = lambda seq: Counter(seq)

read_text = lambda p: Path(p).read_text(encoding="utf-8")

write_text = lambda p, text: Path(p).write_text(text, encoding="utf-8")

read_json = lambda p: json.loads(Path(p).read_text(encoding="utf-8"))

write_json = lambda p, obj: Path(p).write_text(json.dumps(obj, ensure_ascii=False, indent=2), encoding="utf-8")

mean_std = lambda xs: (stats.mean(xs), stats.pstdev(xs))

@Python_Community_ru
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Коварная ловушка с замыканиями в Python

Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.

Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.



funcs = []

for i in range(5):
funcs.append(lambda x=i: x) # фиксируем i как значение по умолчанию

print([f() for f in funcs]) # [0, 1, 2, 3, 4]

@Python_Community_ru
👍6
🌀 В Python есть встроенная функция reversed(), но работает она не со всеми структурами данных. Быстрый разбор:

✓ Список можно развернуть
reversed([1, 2, 3]) возвращает итератор.
list(reversed([1, 2, 3])) → [3, 2, 1]

✓ Кортежи тоже разворачиваются
Можно итерироваться по reversed((1, 2, 3))

✓ Множества не разворачиваются
reversed({1, 2, 3}) → TypeError: 'set' object is not reversible
Причина: множества *не имеют порядка*, а значит разворачивать нечего.

Если нужно развернуть множество — сначала сделай его списком:
list(reversed(list({1, 2, 3})))

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Безопасный запуск Linux-команд из Python

Если нужно из Python безопасно выполнять системные команды в Linux, используй изоляцию через subprocess с принудительным сбросом привилегий. Такой приём позволяет запускать команды даже в окружениях с потенциально небезопасным вводом, блокируя доступ к опасным системным вызовам и снижая риск эксплуатации.



import subprocess
import os

def safe_run(cmd):
# Запускаем процесс без наследования переменных окружения
env = {"PATH": "/usr/bin:/bin"}

# Сбрасываем привилегии, если процесс запущен от root
def drop_priv():
os.setgid(65534)
os.setuid(65534)

result = subprocess.run(
cmd,
env=env,
preexec_fn=drop_priv,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
timeout=3,
)
return result.stdout

print(safe_run(["ls", "/"]))

@Python_Community_ru
🔥3
Изучаем Python, Docker, Git и выходим в DevOps с абсолютного нуля — нашли огромную библиотеку с сотнями подробных материалов.

• Сильная теоретическая база: язык программирования, сети, базы данных, система контроля версий.
• Короткие, но насыщенные уроки — учись по дороге на работу, в обед или во время короткого перерыва.
• Много практики — закрепишь навыки, соберёшь проекты и усилишь своё портфолио.
• Всё объясняется пошагово, простым языком — подойдёт даже тем, кто только сегодня услышал слово «программирование».

https://kodekloud.com/studio/labs

@Python_Community_ru
👍5
🛠️ Tracer для системных вызовов на macOS

strace-macos — это инструмент для отслеживания системных вызовов на macOS с использованием API отладчика LLDB. Он работает с включенной защитой целостности системы и написан на чистом Python, что исключает необходимость в расширениях ядра.

🚀 Основные моменты:
- Поддержка SIP без отключения
- Вывод в формате JSON и текстовом формате
- Фильтрация системных вызовов по имени и категории
- Символическое декодирование аргументов
- Статистика вызовов и ошибок

📌 GitHub: https://github.com/Mic92/strace-macos

@Python_Community_ru
🔥1
🔧 Утилиты для C++ и Python

Этот репозиторий предлагает набор полезных утилит для работы с C++ и Python, упрощая взаимодействие между этими языками. Он включает функции для обработки данных, работы с файлами и выполнения различных задач, что делает его идеальным для разработчиков, работающих с обоими языками.

🚀 Основные моменты:
- Инструменты для обработки и анализа данных
- Удобные функции для работы с файлами
- Поддержка взаимодействия между C++ и Python
- Легкая интеграция в проекты
- Документация для быстрого старта

📌 GitHub: https://github.com/xZepyx/cpp-pyutils

@Python_Community_ru
👍2
🧩 Python Keylogger: Educational Tool for Data Capture

Этот репозиторий представляет собой простой кейлоггер на Python с использованием библиотеки Pynput. Он демонстрирует, как собирать данные и отправлять их на сервер, предназначен исключительно для образовательных целей и осведомленности о безопасности.

🚀Основные моменты:
- Легкий в использовании кейлоггер на Python.
- Использует библиотеку Pynput для захвата нажатий клавиш.
- Предназначен для образовательных целей, не для злоупотреблений.
- Возможность отправки данных на сервер.
- Пример реализации, который можно улучшить.

📌 GitHub: https://github.com/ahoaparadox8/python-keylogger

@Python_Community_ru
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ LAMBDA В ЦИКЛЕ И ОЖИДАТЬ ЧТО ОНА "ЗАПОМНИТ" ПЕРЕМЕННУЮ.

Из-за этого все лямбды, созданные в цикле, будут ссылаться на одно и то же последнее значение.
Код выглядит нормальным, а ведёт себя странно — это классическая проблема замыканий в Python.
Правильно — фиксировать значение через аргумент по умолчанию или выносить в обычную функцию.
Подписывайся, больше фишек каждый день !


# скрытая ошибка — lambda в цикле захватывает последнюю переменную
funcs = []

for i in range(5):
funcs.append(lambda: i) # кажется, что вернёт 0,1,2,3,4 — но нет

# все лямбды вернут одно и то же значение
print([f() for f in funcs]) # [4, 4, 4, 4, 4]

# правильный вариант
funcs_fixed = [lambda x=i: x for i in range(5)]
print([f() for f in funcs_fixed]) # [0, 1, 2, 3, 4]

@Python_Community_ru
👍1
🔒🤖 IoTHackBot: Инструменты для тестирования безопасности IoT

IoTHackBot — это набор инструментов для тестирования безопасности IoT-устройств, включая IP-камеры и встроенные системы. Он предлагает как командные инструменты, так и AI-ассистированные рабочие процессы для автоматизированного обнаружения уязвимостей.

🚀Основные моменты:
- Сканирование устройств с помощью wsdiscovery и onvifscan
- Анализ сетевого трафика с iotnet
- Продвинутое извлечение файлов из прошивок с ffind
- Взаимодействие с консолью через picocom и telnetshell
- Поддержка автоматизации и интеграции инструментов

📌 GitHub: https://github.com/BrownFineSecurity/iothackbot

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️КАК СДЕЛАТЬ EXE ИЗ PYTHON САМЫМ ПРОСТЫМ СПОСОБОМ

Самый удобный способ собрать exe из Python это использовать PyInstaller. Он создаёт полноценный исполняемый файл который запускается без установленного Python. Работает на Windows, не требует сложной настройки и подходит для любых скриптов.


# Установка PyInstaller
pip install pyinstaller

# Создание exe (один файл)
pyinstaller --onefile your_script.py

# Готовый exe будет в папке dist
# Пример запуска
dist\your_script.exe

@Python_Community_ru
🤖 Автономный AI-исследователь для научных экспериментов

Этот проект представляет собой автономного AI-исследователя, который разбивает исследовательскую задачу на эксперименты и запускает специализированные агенты с доступом к GPU для их выполнения. Результаты собираются и оформляются в виде научной статьи.

🚀 Основные моменты:
- Декомпозиция задач на эксперименты с распределением по агентам.
- Агенты запускают GPU-песочницы для обучения и оценки моделей.
- Окончательные результаты формируются в виде связного отчета.

📌 GitHub:

#python

@Python_Community_ru

https://github.com/mshumer/autonomous-researcher
🔥1
🐍⚙️ Продвинутый Python + Docker совет для production:

Используй multi-stage builds + wheels cache - это радикально уменьшает размер образа и ускоряет сборки.

В первом этапе собираешь wheels (компилируемые пакеты), а во втором — устанавливаешь их уже в чистый runtime-слой:


FROM python:3.12 AS builder
RUN pip install --upgrade pip
COPY requirements.txt .
RUN pip wheel --wheel-dir /wheels -r requirements.txt

FROM python:3.12-slim
COPY --from=builder /wheels /wheels
RUN pip install --no-index --find-links=/wheels -r /wheels/requirements.txt
COPY app/ /app


🔥 Плюс:
— быстрый rebuild
— детерминированные зависимости
— значительно меньше образ

Этот трюк мало кто использует, но он делает Docker-окружение Python уровня enterprise.

@Python_Community_ru
🔥2
🏎️ F1 Race Replay: Визуализация гонок Формулы 1 🏁

Приложение на Python для интерактивного воспроизведения гонок Формулы 1 с графическим интерфейсом. Позволяет отслеживать позиции гонщиков в реальном времени, отображать текущие круги и статус водителей, а также управлять воспроизведением с помощью удобных контролов.

🚀 Основные моменты:
- Визуализация гонок с реальными позициями на треке
- Живое обновление позиций гонщиков и их состояния
- Интерактивные элементы управления воспроизведением
- Подробная информация о телеметрии выбранных гонщиков
- Возможность настройки интерфейса и обработки данных

📌 GitHub: https://github.com/IAmTomShaw/f1-race-replay

#python

@Python_Community_ru
🔥1
🖥 Малоизвестный факт о Python random.seed(), который может поломать ваш код

Документация создаёт впечатление, что любое целое число просто используется как seed (это “начальная точка” для генератора случайных чисел.).

Но Python перед использованием просто берёт абсолютное значение.

То есть:

➡️ seed(3) и seed(-3) - порождают один и тот же поток случайных чисел.

Это значит, что разные seed не всегда дают разные последовательности -

Python гарантирует только обратное: одинаковый seed → одинаковые числа.

Почему так?
В исходниках CPython есть строка, которая буквально делает:

seed = abs(seed)

И знак просто теряется, хотя алгоритм случайных чисел мог бы учитывать его.

🧠 Вывод:

Не используйте небольшие вариации seed (например 5 и -5) как способ получить разные потоки случайностей — это небезопасно.
Если вам нужны независимые RNG — создавайте их явно, а не полагаясь на “умные” seed.

[1] https://docs.python.org/3/library/random.html
[2] https://github.com/python/cpython/blob/main/Modules/_randommodule.c#L321C13-L321C30

@Python_Community_ru
🔥2