🐍 Полезный совет по Python: используйте "".join() вместо конкатенации строк в цикле
Многие новички пишут так:
words = ["Python", "очень", "крут"]
result = ""
for w in words:
result += w + " "
print(result)
Код рабочий, но неэффективный: при каждой конкатенации создаётся новая строка, что сильно замедляет работу на больших объёмах данных.
🚀 Правильный способ — использовать " ".join():
words = ["Python", "очень", "крут"]
result = " ".join(words)
print(result)
💡 Преимущества:
- Быстрее и эффективнее на больших списках
- Код чище и короче
-Можно легко задавать разделитель (пробел, запятая, \n)
📊 Пример:
lines = ["строка 1", "строка 2", "строка 3"]
text = "\n".join(lines)
print(text)
Вывод:
строка 1
строка 2
строка 3
📌 Итог
Используйте "".join() для объединения строк из списка — это питонично, быстро и удобно.
@Python_Community_ru
Многие новички пишут так:
words = ["Python", "очень", "крут"]
result = ""
for w in words:
result += w + " "
print(result)
Код рабочий, но неэффективный: при каждой конкатенации создаётся новая строка, что сильно замедляет работу на больших объёмах данных.
🚀 Правильный способ — использовать " ".join():
words = ["Python", "очень", "крут"]
result = " ".join(words)
print(result)
💡 Преимущества:
- Быстрее и эффективнее на больших списках
- Код чище и короче
-Можно легко задавать разделитель (пробел, запятая, \n)
📊 Пример:
lines = ["строка 1", "строка 2", "строка 3"]
text = "\n".join(lines)
print(text)
Вывод:
строка 1
строка 2
строка 3
📌 Итог
Используйте "".join() для объединения строк из списка — это питонично, быстро и удобно.
@Python_Community_ru
🖥 Полный проект с нуля: клон голоса на Python
🔊 Клонирование голоса на Python с нуля: пошаговый разбор, рабочий код, проверка сходства и защита с водяными знаками.
Полное руководство для разработчиков по созданию собственного проекта voice cloning.
📌 Читать (https://uproger.com/polnyj-proekt-s-nulya-klon-golosa-na-python/)
@Python_Community_ru
🔊 Клонирование голоса на Python с нуля: пошаговый разбор, рабочий код, проверка сходства и защита с водяными знаками.
Полное руководство для разработчиков по созданию собственного проекта voice cloning.
📌 Читать (https://uproger.com/polnyj-proekt-s-nulya-klon-golosa-na-python/)
@Python_Community_ru
📊 Из PDF в DataFrame за пару строк кода
Работаете с финансовыми отчётами или любыми табличными данными в PDF?
С библиотекой docling это становится максимально просто.
Большинство инструментов для работы с PDF заставляют собирать пайплайн вручную:
одна библиотека для извлечения текста, другая для парсинга, третья для чанкинга.
Docling закрывает весь процесс — от сырых PDF до структурированных и готовых к поиску данных — в одном решении.
📌 Преимущество Docling
🔹 Поддержка PDF, DOCX, PPTX, HTML и изображений
🔹 AI-модель TableFormer для понимания сложных таблиц
🔹 Vision-модели для OCR и image-to-text
🔹 Простой экспорт в pandas DataFrame, JSON и Markdown
Пример: конвертируем PDF с отчётом о доходах и сразу получаем pandas DataFrame 👇
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("financial_report.pdf")
for table in result.document.tables:
df = table.export_to_dataframe()
📌 Github (https://github.com/docling-project/docling)
#AI #RAG #Docling #DataEngineering #PDF
@Python_Community_ru
Работаете с финансовыми отчётами или любыми табличными данными в PDF?
С библиотекой docling это становится максимально просто.
Большинство инструментов для работы с PDF заставляют собирать пайплайн вручную:
одна библиотека для извлечения текста, другая для парсинга, третья для чанкинга.
Docling закрывает весь процесс — от сырых PDF до структурированных и готовых к поиску данных — в одном решении.
📌 Преимущество Docling
🔹 Поддержка PDF, DOCX, PPTX, HTML и изображений
🔹 AI-модель TableFormer для понимания сложных таблиц
🔹 Vision-модели для OCR и image-to-text
🔹 Простой экспорт в pandas DataFrame, JSON и Markdown
Пример: конвертируем PDF с отчётом о доходах и сразу получаем pandas DataFrame 👇
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("financial_report.pdf")
for table in result.document.tables:
df = table.export_to_dataframe()
📌 Github (https://github.com/docling-project/docling)
#AI #RAG #Docling #DataEngineering #PDF
@Python_Community_ru
👎1
☕️ JPype — проект, позволяющий вызывать Java-код напрямую из Python-скриптов. В отличие от Jython, JPype не переписывает Python на Java, а создает мост между двумя виртуальными машинами через нативные интерфейсы.
Инструмент сохраняет доступ ко всем возможностям CPython и Java-библиотек одновременно. Это открывает возможности для использования Java-фреймворков в научных вычислениях на Python, тестирования Java-кода через Python-скрипты и интеграции legacy-систем.
🤖 GitHub (https://github.com/jpype-project/jpype)
@Python_Community_ru
Инструмент сохраняет доступ ко всем возможностям CPython и Java-библиотек одновременно. Это открывает возможности для использования Java-фреймворков в научных вычислениях на Python, тестирования Java-кода через Python-скрипты и интеграции legacy-систем.
🤖 GitHub (https://github.com/jpype-project/jpype)
@Python_Community_ru
Media is too big
VIEW IN TELEGRAM
🚀 Jupyter Agent 2
Этот агент умеет:
📂 Загружать данные
💻 Запускать код
📊 Строить графики прямо в Jupyter — быстрее, чем вы успеете прокрутить экран!
🤖 Основан на движке Qwen3-Coder
⚡️ Работает на Cerebras
⚙️ Запускается в E2B
↕️ Поддерживает загрузку файлов
👉 Попробовать можно здесь: https://hf.co/spaces/lvwerra/jupyter-agent-2
@Python_Community_ru
Этот агент умеет:
📂 Загружать данные
💻 Запускать код
📊 Строить графики прямо в Jupyter — быстрее, чем вы успеете прокрутить экран!
🤖 Основан на движке Qwen3-Coder
⚡️ Работает на Cerebras
⚙️ Запускается в E2B
↕️ Поддерживает загрузку файлов
👉 Попробовать можно здесь: https://hf.co/spaces/lvwerra/jupyter-agent-2
@Python_Community_ru
🐍 Изучаем MCP на Python — серия уроков от Microsoft
Пошаговое руководство для Python-разработчиков по Model Context Protocol (MCP):
как понять концепцию и построить свой MCP-сервер в интерактивном формате.
📚 Репозиторий с гайдом (https://github.com/microsoft/lets-learn-mcp-python)
#python #MCP #tutorial #developers
@Python_Community_ru
Пошаговое руководство для Python-разработчиков по Model Context Protocol (MCP):
как понять концепцию и построить свой MCP-сервер в интерактивном формате.
📚 Репозиторий с гайдом (https://github.com/microsoft/lets-learn-mcp-python)
#python #MCP #tutorial #developers
@Python_Community_ru
⚡️ Limekit — кроссплатформенный GUI-фреймворк на Lua
Хочешь писать десктоп-приложения без Python и компиляции?
С Limekit всё просто: «написал один раз — запускай везде» (Windows, macOS, Linux).
✨ Что умеет:
- Чистый Lua API, без необходимости знать Python
- 40+ встроенных виджетов, поддержка Material Design и тёмной темы
- Запуск без сборки — достаточно Python и самого фреймворка
- Много примеров и документация на ReadTheDocs
- Полностью опенсорс (GPLv3)
📌 Минимальный пример:
local window = Window{title='Limekit app'}
window:show()
Две строки кода — и у тебя уже готовое окно 🚀
⚡️GitHub (https://github.com/mitosisX/Limekit)
@Python_Community_ru
Хочешь писать десктоп-приложения без Python и компиляции?
С Limekit всё просто: «написал один раз — запускай везде» (Windows, macOS, Linux).
✨ Что умеет:
- Чистый Lua API, без необходимости знать Python
- 40+ встроенных виджетов, поддержка Material Design и тёмной темы
- Запуск без сборки — достаточно Python и самого фреймворка
- Много примеров и документация на ReadTheDocs
- Полностью опенсорс (GPLv3)
📌 Минимальный пример:
local window = Window{title='Limekit app'}
window:show()
Две строки кода — и у тебя уже готовое окно 🚀
⚡️GitHub (https://github.com/mitosisX/Limekit)
@Python_Community_ru
🤔1
🆕 OctoBot — мощный криптовалютный торговый бот с открытым исходным кодом!
OctoBot — это:
- Открытый и настраиваемый крипто-торговый бот от Drakkar-Software
- Интерфейс конфигурации и система *tentacles* (модули-«щупальца») для гибкого построения стратегий — от технического анализа до интеграции внешних данных
- Поддержка Spot и Futures, торговля на более чем 15 биржах через библиотеку ccxt
- Возможности: создание и тестирование стратегий, оптимизация, торговля корзиной криптовалют, использование AI-инструментов и backtesting
Архитектура проекта:
- OctoBot — ядро с backtesting и стратегическим менеджментом
- OctoBot-Tentacles — модули для стратегий, нотификаций, внешних данных
- OctoBot-Trading — взаимодействие с биржами через ccxt
- Дополнительные пакеты: OctoBot-Services, OctoBot-Backtesting, OctoBot-Commons, Async-Channel
Активность и релизы:
- 4,5k★ и 900+ форков на GitHub
- Недавний релиз 2.0.12 (июнь 2025) с поддержкой Windows, Linux (x64, arm64) и macOS
- Регулярные обновления и активное сообщество
Почему это важно:
- Гибкая модульная архитектура
- Возможность добавлять свои стратегии и источники данных
- Отличный инструмент для изучения алгоритмической торговли и прототипирования
- Интеграции с AI, TradingView, Telegram
👉 Репозиторий: https://github.com/Drakkar-Software/OctoBot
@Python_Community_ru
OctoBot — это:
- Открытый и настраиваемый крипто-торговый бот от Drakkar-Software
- Интерфейс конфигурации и система *tentacles* (модули-«щупальца») для гибкого построения стратегий — от технического анализа до интеграции внешних данных
- Поддержка Spot и Futures, торговля на более чем 15 биржах через библиотеку ccxt
- Возможности: создание и тестирование стратегий, оптимизация, торговля корзиной криптовалют, использование AI-инструментов и backtesting
Архитектура проекта:
- OctoBot — ядро с backtesting и стратегическим менеджментом
- OctoBot-Tentacles — модули для стратегий, нотификаций, внешних данных
- OctoBot-Trading — взаимодействие с биржами через ccxt
- Дополнительные пакеты: OctoBot-Services, OctoBot-Backtesting, OctoBot-Commons, Async-Channel
Активность и релизы:
- 4,5k★ и 900+ форков на GitHub
- Недавний релиз 2.0.12 (июнь 2025) с поддержкой Windows, Linux (x64, arm64) и macOS
- Регулярные обновления и активное сообщество
Почему это важно:
- Гибкая модульная архитектура
- Возможность добавлять свои стратегии и источники данных
- Отличный инструмент для изучения алгоритмической торговли и прототипирования
- Интеграции с AI, TradingView, Telegram
👉 Репозиторий: https://github.com/Drakkar-Software/OctoBot
@Python_Community_ru
GitHub
GitHub - Drakkar-Software/OctoBot: Open source crypto trading bot
Open source crypto trading bot. Contribute to Drakkar-Software/OctoBot development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
🍏 Apple представила FastVLM на Hugging Face — модели 0.5B, 1.5B и 7B с поддержкой WebGPU
VLM (Vision-Language Model) — это модель, которая умеет одновременно работать с картинками и текстом: понимать, что изображено, описывать картинку словами, отвечать на вопросы по изображению и совмещать визуальные и текстовые данные.
⚡ Что это значит:
- До 85 раз быстрее и в 3.4 раза компактнее аналогичных VLM
- У крупных моделей время до первого токена стало быстрее в 7.9 раз
- Меньше выходных токенов + быстрее обработка картинок высокого разрешения
🔥Модель работает в реальном времени прямо в браузере через transformers.js и WebGPU.
https://huggingface.co/spaces/apple/fastvlm-webgpu
@Python_Community_ru
VLM (Vision-Language Model) — это модель, которая умеет одновременно работать с картинками и текстом: понимать, что изображено, описывать картинку словами, отвечать на вопросы по изображению и совмещать визуальные и текстовые данные.
⚡ Что это значит:
- До 85 раз быстрее и в 3.4 раза компактнее аналогичных VLM
- У крупных моделей время до первого токена стало быстрее в 7.9 раз
- Меньше выходных токенов + быстрее обработка картинок высокого разрешения
🔥Модель работает в реальном времени прямо в браузере через transformers.js и WebGPU.
https://huggingface.co/spaces/apple/fastvlm-webgpu
@Python_Community_ru
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Необычный Python-совет
В Python можно перегрузить оператор [] и превратить объект в умный словарь или вычисляемый массив. Это позволяет писать очень выразительный код.
Пример: создадим класс, который хранит функцию и вычисляет результат «на лету» при обращении по индексу:
class PowTable:
def __init__(self, power):
self.power = power
def __getitem__(self, n):
return n ** self.power
squares = PowTable(2)
cubes = PowTable(3)
print(squares[5]) # 25
print(cubes[4]) # 64
👉 В итоге obj[x] может не просто доставать значение, а вычислять его динамически.
Это мощный приём для DSL, кэшей и ленивых вычислений.
@Python_Community_ru
В Python можно перегрузить оператор [] и превратить объект в умный словарь или вычисляемый массив. Это позволяет писать очень выразительный код.
Пример: создадим класс, который хранит функцию и вычисляет результат «на лету» при обращении по индексу:
class PowTable:
def __init__(self, power):
self.power = power
def __getitem__(self, n):
return n ** self.power
squares = PowTable(2)
cubes = PowTable(3)
print(squares[5]) # 25
print(cubes[4]) # 64
👉 В итоге obj[x] может не просто доставать значение, а вычислять его динамически.
Это мощный приём для DSL, кэшей и ленивых вычислений.
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Полезный совет: any и all в Python работают с генераторами и используют short-circuit
Иногда в python есть малоизвестные особенности, которые могут сильно помочь.
Например, функция all и any умеют работать не только с простыми списками, но и с генераторами. Это значит, что пайтон остановит проверку сразу, как только результат станет очевидным — это называется "шорт-сёркьют".
nums = [0, 0, 0, 5, 0]
#any (эни) вернёт True, как только найдёт первый элемент != 0
print(any(nums)) # True
#ll (ол) вернёт False, как только встретит первый элемент == 0
print(all(nums)) # False
#использование с генератором — не создаёт лишний список
print(any(x > 10 for x in nums)) # False
Это позволяет писать очень эффективный код без лишних проверок и без создания промежуточных списков.
@Python_Community_ru
Иногда в python есть малоизвестные особенности, которые могут сильно помочь.
Например, функция all и any умеют работать не только с простыми списками, но и с генераторами. Это значит, что пайтон остановит проверку сразу, как только результат станет очевидным — это называется "шорт-сёркьют".
nums = [0, 0, 0, 5, 0]
#any (эни) вернёт True, как только найдёт первый элемент != 0
print(any(nums)) # True
#ll (ол) вернёт False, как только встретит первый элемент == 0
print(all(nums)) # False
#использование с генератором — не создаёт лишний список
print(any(x > 10 for x in nums)) # False
Это позволяет писать очень эффективный код без лишних проверок и без создания промежуточных списков.
@Python_Community_ru
🚀 Современная система сборки Meson
Meson — это высокопроизводительная система сборки, ориентированная на простоту и скорость. Она поддерживает множество языков и инструментов, обеспечивая гибкость и эффективность в разработке.
🚀 Основные моменты:
- Поддержка Python и Ninja для сборки.
- Быстрая и интуитивно понятная настройка проектов.
- Активное сообщество и возможность внесения вкладов.
- Совместимость с различными платформами и языками.
📌 GitHub: https://github.com/mesonbuild/meson
@Python_Community_ru
Meson — это высокопроизводительная система сборки, ориентированная на простоту и скорость. Она поддерживает множество языков и инструментов, обеспечивая гибкость и эффективность в разработке.
🚀 Основные моменты:
- Поддержка Python и Ninja для сборки.
- Быстрая и интуитивно понятная настройка проектов.
- Активное сообщество и возможность внесения вкладов.
- Совместимость с различными платформами и языками.
📌 GitHub: https://github.com/mesonbuild/meson
@Python_Community_ru
⚠️ SQL-инъекция через f-string
Если подставлять значения прямо в SQL через f-string, злоумышленник может выполнить любой код в базе:
name = "Alice'; DROP TABLE accounts; --"
query = f"SELECT * FROM accounts WHERE name = '{name}'"
conn.sql(query)
💥 И вот таблица accounts удалена!
Почему так?
Потому что строка с именем вставляется как есть и воспринимается как часть SQL-запроса.
✅ Правильный способ — использовать параметры:
name = "Alice'; DROP TABLE accounts; --"
query = "SELECT * FROM accounts WHERE name = ?"
conn.sql(query, params=(name,))
✔ Имя ищется как текст, база остаётся в безопасности.
👉 Запомни: никогда не вставляй пользовательские данные напрямую в SQL.
Используй параметризованные запросы — это надёжная защита от SQL-инъекций.
@Python_Community_ru
Если подставлять значения прямо в SQL через f-string, злоумышленник может выполнить любой код в базе:
name = "Alice'; DROP TABLE accounts; --"
query = f"SELECT * FROM accounts WHERE name = '{name}'"
conn.sql(query)
💥 И вот таблица accounts удалена!
Почему так?
Потому что строка с именем вставляется как есть и воспринимается как часть SQL-запроса.
✅ Правильный способ — использовать параметры:
name = "Alice'; DROP TABLE accounts; --"
query = "SELECT * FROM accounts WHERE name = ?"
conn.sql(query, params=(name,))
✔ Имя ищется как текст, база остаётся в безопасности.
👉 Запомни: никогда не вставляй пользовательские данные напрямую в SQL.
Используй параметризованные запросы — это надёжная защита от SQL-инъекций.
@Python_Community_ru
🔥2👍1
🔍 Django ModelSearch: Умный поиск для ваших моделей
Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с помощью ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений в ваших приложениях.
🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фасетного поиска
- Возможность использования существующих QuerySets
- Поддержка нечеткого поиска и структурированных запросов
- Нулевая простоя при перестройке индекса
📌 GitHub: https://github.com/kaedroho/django-modelsearch
#python
@Python_Community_ru
Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с помощью ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений в ваших приложениях.
🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фасетного поиска
- Возможность использования существующих QuerySets
- Поддержка нечеткого поиска и структурированных запросов
- Нулевая простоя при перестройке индекса
📌 GitHub: https://github.com/kaedroho/django-modelsearch
#python
@Python_Community_ru
GitHub
GitHub - kaedroho/django-modelsearch: Index Django Models with Elasticsearch or OpenSearch and query them with the ORM
Index Django Models with Elasticsearch or OpenSearch and query them with the ORM - kaedroho/django-modelsearch
В преддверии новой активности мы собрали в одну папку 30 Telegram-каналов известных профессионалов и попросили их авторов подготовить для вас документы, которые помогут:
Также они проводят розыгрыш с топовыми призами:
Как участвовать:
1. Подпишись на папку: https://t.me/addlist/AYTpZaCWIxA5NWNi
2. Подтверди участие в боте
До встречи 25 сентября — дата объявления победителя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
📐 Agent Reinforcement Trainer — фреймворк для обучения ИИ-агентов через reinforcement learning
Проект предлагает удобный способ прокачки LLM для решения практических задач. Во время работы ART использует метод GRPO и позволяет обучать агентов работать с MCP-серверами, играть в игры и выполнять другие действия через взаимодействие со средой.
Инструмент минимально требователен к данным — система сама анализирует доступные инструменты и генерирует учебные сценарии. Поддерживается интеграция с популярными языковыми моделями, включая Qwen 2.5.
🤖 GitHub (https://github.com/OpenPipe/ART)
@Python_Community_ru
Проект предлагает удобный способ прокачки LLM для решения практических задач. Во время работы ART использует метод GRPO и позволяет обучать агентов работать с MCP-серверами, играть в игры и выполнять другие действия через взаимодействие со средой.
Инструмент минимально требователен к данным — система сама анализирует доступные инструменты и генерирует учебные сценарии. Поддерживается интеграция с популярными языковыми моделями, включая Qwen 2.5.
🤖 GitHub (https://github.com/OpenPipe/ART)
@Python_Community_ru
👨💻 Omnara — Mission Control для AI-агентов
Что это?
Omnara — это «диспетчерская» для ваших AI-агентов. С её помощью можно управлять и наблюдать за работой агентов в реальном времени: через терминал, веб-интерфейс и мобильное приложение.
Возможности
- Отслеживание всех шагов агента в реальном времени.
- Push-уведомления, когда агент ждёт обратной связи.
- Ответы и контроль прямо с телефона или браузера.
- Единый дашборд для всех агентов.
Почему это удобно
- Не нужно сидеть за ПК, чтобы держать процесс под контролем.
- Всё open-source, можно разворачивать самостоятельно.
- Подходит как для разработчиков-одиночек, так и для команд.
👉 Omnara делает взаимодействие с AI-агентами гибким и удобным: вы всегда в курсе, что они делают, и можете вмешаться в любой момент.
🔗 GitHub (https://github.com/omnara-ai/omnara)
@Python_Community_ru
Что это?
Omnara — это «диспетчерская» для ваших AI-агентов. С её помощью можно управлять и наблюдать за работой агентов в реальном времени: через терминал, веб-интерфейс и мобильное приложение.
Возможности
- Отслеживание всех шагов агента в реальном времени.
- Push-уведомления, когда агент ждёт обратной связи.
- Ответы и контроль прямо с телефона или браузера.
- Единый дашборд для всех агентов.
Почему это удобно
- Не нужно сидеть за ПК, чтобы держать процесс под контролем.
- Всё open-source, можно разворачивать самостоятельно.
- Подходит как для разработчиков-одиночек, так и для команд.
👉 Omnara делает взаимодействие с AI-агентами гибким и удобным: вы всегда в курсе, что они делают, и можете вмешаться в любой момент.
🔗 GitHub (https://github.com/omnara-ai/omnara)
@Python_Community_ru