Python/ django
58.7K subscribers
2.11K photos
67 videos
48 files
2.83K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит-каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
加入频道
Устроиться аналитиком в Яндекс за выходные

7–8 июня проводим Weekend Offer Analytics. До 3 июня оставьте заявку на участие, 7 июня пройдите два технические собеседования, а 8 июня познакомьтесь с командами и получите офер.

В мероприятии участвует 12 команд: Алиса и Умные устройства, Игры, R&D, Рекламные технологии, Поиск и Суперапп, Безопасность, Коммерческий департамент, Автономный транспорт, Ecom-сценарии Поиска, Качество Поиска, Международный Поиск, Карты. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.

Узнать подробности и зарегистрироваться можно здесь.
🖥 Хитрая задача на 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 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__`, типизацией и сериализацией — пиши 💬


@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Руководство_по_ускорению_и_оптимизации_Python_кода.pdf
264.6 KB
🖥 Гайд по ускорению Python, который реально стоит прочитать 🔥

Без лишней теории — только рабочие практики, которые используют разработчики в боевых проектах.

Внутри:
• Как искать bottleneck'и и профилировать код
• Где и когда использовать Numba, Cython, PyPy
• Ускорение Pandas, NumPy, переход на Polars
• Асинхронность, кеши, JIT, сборка, автопрофилировка — всё по полочкам
• Только нужные инструменты: scalene, py-spy, uvloop, Poetry, Nuitka

⚙️ Написано просто, чётко и с прицелом на production.

📌 Полная версия онлайн

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🎙️ 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

@pythonl
Хотите быстро создать своего Telegram-бота?

Например:
📊 Бота-аналитика, который собирает данные и строит отчеты
🤖 Бота-переводчика, который поможет общаться с зарубежными коллегами
🎬 Бота-киноэксперта, который подберет фильмы по настроению

Какого бы помощника вы ни хотели запустить, это можно легко сделать в облаке без настройки серверов и затрат на инфраструктуру.

Облачный провайдер Cloud․ru расскажет на бесплатном вебинаре 5 июня, как создать бота в облаке и какие компоненты для этого нужны.

Будет демо — в прямом эфире эксперт покажет процесс и ответит на вопросы.

Зарегистрироваться на вебинар🖱
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 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-утилит, скриптов и системных инструментов.

@pythonl
🎯 5 ИИ-проектов, которые ты можешь собрать за выходные

Хочешь прокачать навыки ML и Python без математики и Kaggle? Лови 5 готовых идей, которые можно собрать за 1–2 дня:

🔹 Голосовой ассистент — Whisper + GPT + озвучка
🔹 Чат-бот для PDF — LangChain + FAISS + OpenAI
🔹 Генератор картинок — Stable Diffusion + Gradio
🔹 Подписи к фото — BLIP + HuggingFace
🔹 TL;DR бот — BART или GPT для суммаризации текста

Примеры кода
Деплой на HuggingFace / Streamlit
Всё реально собрать за выходные

📎 Забирай гайд — и добавь проекты в резюме: «AI developer: checked»

@pythonl
🐍 Ошибка с изменяемыми значениями по умолчанию»**

🎯 Цель: Найти и объяснить баг, который не вызывает исключений, но ломает логику приложения

📍 Ситуация:

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


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 + инициализацию внутри функции для изменяемых типов.

@pythonl
🕵️‍♂️ 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 сэкономит часы ручного анализа.

📁 Репозиторий:

@pythonl
Реально ли совмещать учёбу с работой и жизнью?

Совместный онлайн-бакалавриат НИУ ВШЭ и Нетологии как раз даёт такую возможность.
Обучение проходит полностью дистанционно, но в очной форме, а значит сохраняется отсрочка от армии, льготы на проезд, доступ к библиотеке и возможность взять образовательный кредит с господдержкой.

На первых курсах вы изучите базовые математические и гуманитарные предметы,
основы программирования и профильные дисциплины по фулстек-разработке.

А с третьего курса выберете углублённый трек: руководитель командой разработки или DevOps-инженер.
По итогу обучения освоите 4 языка программирования: Java, Python, JavaScript, Go.

Практики будет много — участие в хакатонах, командные проекты и возможность попасть на стажировку в Сбер по ускоренному треку.
Получите диплом, который поможет строить карьеру в сильных IT-командах.

Учитесь без отрыва от жизни: https://netolo.gy/ebKb

Реклама. ООО "Нетология". ИНН 7726464125 Erid: 2VSb5wZ53dr
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Physics Simulations

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

- Законы Ньютона
- Гравитацию
- Силы и трение
- Простую гармоническую модуляцию
- И многое другое

Для запуска симуляций необходимо установить зависимости:


pip install -r requirements.txt


Затем можно запустить нужный скрипт напрямую, например:


python gravity_sim.py


Каждый файл представляет отдельную симуляцию, сопровождаемую визуализацией с помощью Pygame.

📌 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это реклама открытой технологической конференции от Сбера GigaConf 2025.

На ней технари рассказывают сложные вещи о прикладном применение генеративного искусственного интеллекта.

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

GigaConf 2025 // Москва, 25 июня
https://gigaconf.ru/
🤖 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

@pythonl
Давно хотели освоить программирование, но вас останавливала нехватка времени или строгие дедлайны? Тогда советуем обратить внимание на бесплатные курсы Яндекс Лицея по Python, Go и C++ для начинающих.

Заниматься на них можно когда и где угодно, ведь уроки доступны онлайн и в них нет дедлайнов! Вас ждут:
Качество: занятия разработаны практикующими экспертами Яндекса.
Свобода: пользуйтесь автоматической проверкой решений и задавайте вопросы через поддержку.
Перспективы: после завершения вы получите уверенную базу для дальнейшего роста, а также сертификат, который пригодится при поступлении в Яндекс Лицей.

Не откладывайте на потом — выберите курс и зарегистрируйтесь на сайте!
🚨 Атака на PyPI, npm и RubyGems: сотни вредоносных пакетов в официальных реестрах

🔍 Исследователи обнаружили массовую кампанию по размещению вредоносных библиотек в популярных экосистемах:

🧪 Что произошло:
• На npm опубликованы фейковые версии библиотек вроде Hardhat, крадущие приватные ключи и .env
• В PyPI появились клоны requests, urllib3 и др., с вредоносными вставками
• В RubyGems — более 700 пакетов, использующих тайпосквоттинг (`activesupportt`, httpartyy и т.д.)

🎯 Цель — разработчики. Пакеты собирают:
– мнемоники
– приватные ключи
– конфиги AWS/GCP
– системную информацию

🛡 Что делать:
– Проверяй названия пакетов (тайпосквоттинг — главный приём)
– Запускай pip audit, npm audit, bundler audit
– Используй виртуальные окружения и минимум прав
– Подпиши зависимости, где это возможно (например, через Sigstore)

📌 Подробнее