Python_BE1
9 subscribers
748 photos
252 videos
7 files
672 links
Канал по Python, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
🐍 Python + Ruff: сложность кода под контролем

На скрине — функция `validate_product`, которая проходит несколько вложенных проверок.
Линтер Ruff с правилом `C901` (McCabe Complexity) сигнализирует: сложность функции = 7, что выше лимита 5.

📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки.

⚠️ Почему это важно:
• Снижение читаемости
• Рост вероятности багов
• Трудности при тестировании

💡 Решение:
1. Разбить функцию на несколько маленьких с понятными именами
2. Использовать ранние выходы (`return`) вместо вложенных `if`
3. Упрощать логику с помощью вспомогательных функций или структур данных

#Python #Ruff #CleanCode #Refactoring #McCabeComplexity

@python_be1
🐉 Windmill — open-source платформа для разработки внутренних инструментов, которая превращает скрипты в готовые API, фоновые задачи и веб-интерфейсы. Проект позиционируется как альтернатива коммерческим решениям вроде Retool или Superblocks, но с акцентом на гибкость и self-hosted развёртывание.

Интересно реализована идея автоматической генерации UI: достаточно написать скрипт на Python, TypeScript, Go или Bash и Windmill создаст для него веб-форму с параметрами. Готовые скрипты можно комбинировать в сложные workflows или встраивать в low-code приложения. Под капотом — Rust, Postgres и sandbox-исполнение через nsjail для безопасности.

🤖 GitHub (https://github.com/windmill-labs/windmill)

@python_be1
Монолитные тесты = больше головной боли при отладке.
Когда в одном тесте проверяешь всё подряд, при падении непонятно, какой именно сценарий сломался.

Пишем специфичные тесты.
Каждая функция тестирует один конкретный случай. Так при падении сразу видно, где ошибка.

Плохо:
```

def test_extract_sentiment():
assert extract_sentiment("I love this!") == "positive"
assert extract_sentiment("Terrible") == "negative"
assert extract_sentiment("On time") == "neutral"

```

Хорошо:
```

def test_extract_sentiment_positive():
assert extract_sentiment("I love this!") == "positive"

def test_extract_sentiment_negative():
assert extract_sentiment("Terrible") == "negative"

```

📌 Результат — быстрее находишь баги и не тратишь время на догадки.

@python_be1
🛞 CrossHair — необычный инструмент для анализа Python-кода, который использует символьное выполнение для поиска ошибок. Вместо традиционных тестов он проверяет корректность функций, анализируя их поведение на основе аннотаций типов и контрактов.

Под капотом работает SMT-решатель, который ищет входные данные, нарушающие условия. Например, может автоматически обнаружить, что ваша функция падает на отрицательных числах, хотя в контракте указано` x: PositiveInt.` Интегрируется с Hypothesis и популярными IDE.

🤖 GitHub (https://github.com/pschanely/CrossHair)

@python_be1
Релизнулся МОЩНЕЙШИЙ удалятор фона — Ripolas вырежет для вас ЛЮБУЮ пикчу за один клик.

• Работает очень шустро — готовый результат получаете за секунду.
• Идеально для простых задач — например, для удаления одноцветного фона.
• Готовый результат можно подредачить с помощью встроенного ползунка и поправить неровности.
• Пикча вылетает в отличном качестве и БЕЗ артефактов.

😶😶😶😶😶😶😶😶😶

Юзаем — тут. (https://ripolas.org/background-remover/)
👍

@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Молниеносный HTML-парсинг: selectolax быстрее BS4 в разы

Полезный трюк: быстро парсим HTML прямо из строки с помощью selectolax — лёгкой и очень быстрой библиотеки на C, в разы быстрее BeautifulSoup.

Установка:

pip install selectolax

Пример:

from selectolax.parser import HTMLParser

html = """

<html><body> <h1>Hello</h1> <p class='msg'>World</p> </body></html> """
tree = HTMLParser(html)
print(tree.css_first("h1").text()) # Hello
print(tree.css_first("p.msg").text()) # World

@python_be1
ИИ впервые взял золото на Международной олимпиаде по информатике

OpenAI сообщила, (https://x.com/sherylhsu02/status/1954966109851119921?s=46) что их экспериментальная модель заняла первое место среди всех ИИ-моделей и 6 место среди 330 кожаных участников на сложнейшей Олимпиаде по информатике для школьников.

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

И тут OpenAI проиграла азиатам 😁

@python_be1
Проходим сложные собеседования без проблем — тулза cheating daddy (https://cheatingdaddy.com/) поможет получить самый жирный оффер.

Сервис генерирует готовые ответы для HR в реальном времени. Работает быстро и четко. Помимо генерации ответов, тулза умеет подсказывать формулировки, приводить примеры кода, напоминать о ключевых алгоритмах и даже корректировать технические неточности в ответах.

Все это в ПОЛНОЙ «невидимости». Сервис функционирует без сбоев, а при подключении бесплатного Gemini API раскрывает весь свой потенциал. Остается только не вылететь с работы через месяц.

Срочно забираем имбу — здесь. (https://cheatingdaddy.com/)

@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Python: Быстрое измерение времени выполнения кода с контекстным менеджером

Полезный трюк для Python-разработчиков: если вам нужно замерить время работы конкретного участка кода, можно использовать контекстный менеджер перф каунтер вместе с with.

Это позволит быстро и удобно профилировать фрагменты без громоздких измерений и принтов. Такой приём особенно полезен при оптимизации производительности.

@python_be1
Для продвинутых администраторов Linux есть одна команда, которая может значительно облегчить управление системами — это 'lsof'. Эта утилита позволяет просмотреть список открытых файлов и сокетов в системе, что крайне полезно для диагностики и мониторинга. Например, если вам нужно выяснить, какой процесс использует определённый порт, просто выполните 'lsof -i :<порт>'. Это даст вам информацию о процессе, который его использует, включая PID и имя пользователя.

Используя 'lsof', администраторы могут быстро находить утечки памяти, следить за активностью сетевых соединений и даже выявлять несанкционированные доступы. Кроме того, команда позволяет фильтровать вывод по различным критериям, что делает её мощным инструментом для анализа состояния системы и устранения проблем.

@python_be1
Media is too big
VIEW IN TELEGRAM
Прорыв в алгоритмах: найден способ считать кратчайшие пути быстрее Дейкстры

@python_be1
Для продвинутых пользователей Linux одна из самых мощных команд — это 'strace'. Эта утилита позволяет отслеживать системные вызовы и сигналы, которые генерируются процессом в реальном времени. Вы можете использовать 'strace -p <PID>' для мониторинга конкретного процесса, чтобы увидеть, какие файлы он открывает, какие сетевые запросы отправляет и какие ошибки возникают. Это бесценный инструмент для отладки и диагностики, позволяющий получить детализированную информацию о работе приложения и его взаимодействии с операционной системой. Например, если приложение не может открыть файл, 'strace' покажет, какие именно вызовы были сделаны и почему они не удались. Это значительно ускоряет процесс поиска и устранения неполадок, особенно в сложных системах.

@python_be1
📸 Разработчик запустил свой код на сервере, имея лишь возможность изменения содержимого комментария в Python-скрипте

Участник соревнования UIUCTF 2025 обошёл ограничения задачи, где можно было изменять только содержимое комментария в Python-скрипте и подробно рассказал об этом. Вместо поиска уязвимостей в парсере, он использовал особенность интерпретатора — выполнение ZIP-архивов как Python-кода.

Секрет в структуре ZIP-файлов: Python ищет метаданные в конце архива, что позволило вставить архив в комментарий, сохранив валидность исходного скрипта. При запуске такого скрипта выполнялся код из<i> </i><i>main.</i>py внутри архива.

🔗 Ссылка - *клик* (https://www.hacktron.ai/blog/posts/python-zip-confusion/)

@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 GPT-5 прошёл Pokémon Red!

6 470 шагов против 18 184 у o3 — колоссальный прогресс в эффективности.

• GPT-5 гораздо реже «галлюцинирует» — главный фактор ускорения.
• Лучшая пространственная логика: o3 часто пытался «пробиться» сквозь стены и путался в сложных локациях, а GPT-5 умеет планировать длинные последовательности действий с минимумом ошибок.
• Более чёткое планирование целей и их последовательное выполнение.

Теперь посмотрим, как он справится с финальным испытанием! 🔥

🔜 Следующий челлендж: GPT-5 играет Pokémon Crystal. Старт скоро на Twitch!

Livestream: https://twitch.tv/gpt_plays_pokemon

@python_be1
Еще одна полезная команда для системных администраторов — 'nc', или Netcat. Эта утилита позволяет отправлять и получать данные по сетевым соединениям, и может использоваться для множества задач: от отладки сетевых сервисов до создания простых чатов. Например, с помощью 'nc -l -p <порт>' вы можете создать прослушивающий сокет, который будет ждать входящих соединений. Это дает вам возможность протестировать, как ваши приложения взаимодействуют по сети, и выявлять проблемы с подключениями. Также 'nc' может быть использован для передачи файлов между машинами или для создания туннелей, что делает его настоящим швейцарским армейским ножом для сетевых администраторов.

@python_be1
Если вы хотите оптимизировать операции с множествами в Python, обратите внимание на использование 'frozenset'. Этот неизменяемый аналог обычного 'set' может быть использован в качестве ключей в словарях, что расширяет ваши возможности работы с данными. Например, вместо использования обычного множества в качестве ключа, создайте 'frozenset', чтобы избежать ошибок, связанных с изменяемостью. Это также позволяет создавать более сложные структуры данных, обеспечивая при этом неизменяемость. Пример создания 'frozenset': 'frozen_set = frozenset([1, 2, 3])'. С его помощью вы сможете легко проверять наличие элементов и выполнять другие операции над множествами.

@python_be1
🚀 Ускоряем работу с данными с помощью Delta Lake

Когда нужно добавить новые данные к уже существующему набору, есть два подхода:

🔴 Без Delta Lake
- Сначала загружаешь все старые данные (например, 10 000 записей) из CSV.
- Загружаешь новые данные (например, 50 записей).
- Объединяешь их, что требует обработки всех 10 050 записей.
- Это медленно, расходует память и ресурсы.

🟢 С Delta Lake
- Хранишь данные в формате Delta Lake.
- Загружаешь только новые записи (например, 50 штук).
- Добавляешь их напрямую в существующую таблицу с помощью `append`, обрабатывая только новые данные.
- Экономия времени, памяти и ресурсов.

💡 Преимущества Delta Lake:
- Инкрементальная загрузка данных.
- Работа с большими объёмами без полной перезагрузки.
- Поддержка транзакций (ACID).
- Совместимость с большими дата-платформами (Spark, Pandas и др.).

📊 Если у тебя миллионы строк — выигрыш в скорости будет колоссальным.

@python_be1
Только что в России начали работать нейросети от Google — без обхода блокировок и без смены региона.

Пробуем тут. (https://gemini.google.com/app)

@python_be1