pythonl | Unsorted

Telegram-канал pythonl - Python/ django

52808

по всем вопросам @haarrp @itchannels_telegram - 🔥 best it channels @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books

Subscribe to a channel

Python/ django

🛠 Вышел новый генератор CAD‑моделей по чертежам — и он реально работает!

GenCAD умеет превращать чертежи в 3D‑модели и сразу генерирует параметрический CAD‑код. Для сложных и детализированных объектов он пока не подойдет, но с простыми деталями вроде винтиков и креплений справляется отлично.

📎 Идеально для быстрого прототипирования стандартных элементов.

📄 Статья: https://openreview.net/pdf?id=e817c1wEZ6
🔗 Сайт: https://gencad.github.io
💻 Код: https://github.com/ferdous-alam/GenCAD

@pythonl - погружение в Python

Читать полностью…

Python/ django

🖥 Полезный, но редко используемый приём: динамическое управление множеством контекст-менеджеров через `contextlib.ExitStack`

Если вам нужно открыть *N* файлов, захватить *M* блокировок или временно изменить кучу настроек, а их количество известно только во время выполнения, традиционный with … as …: не подойдёт. Вместо «пирамиды» вложенных with воспользуйтесь ExitStack:


from contextlib import ExitStack

filenames = ["a.log", "b.log", "c.log"]

with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]

# теперь у вас список открытых файлов, с которыми можно работать
for f in files:
print(f.readline())
# здесь ExitStack автоматически закроет все файлы, даже если их было 1000


Почему это круто

- Управляет произвольным числом контекстов: добавляете их в цикл, условно, через функции-фабрики.
- Гарантирует корректный rollback при исключениях: всё, что добавлено в ExitStack, будет закрыто в обратном порядке.
- Упрощает сложную инициализацию: можно динамически «подключать» то, что нужно именно сейчас (файлы, блокировки, сетевые соединения).

🔧 Где пригодится

- Пакетная обработка файлов и архивов.
- Тестовые стенды с кучей временных ресурсов.
- Плагины, которые могут регистрировать собственные контекст-менеджеры.

Теперь никакого «каскада из with» — один аккуратный ExitStack.

@pythonl

Читать полностью…

Python/ django

🐍 20 ещё более продвинутых однострочников на Python — часть 3

Если ты уже пишешь на Python профессионально, вот ещё приёмы, которые реально экономят строки и читаются на лету:

1. 🗃️ Группировка по ключу без pandas


groups = defaultdict(list); [groups[k].append(v) for k, v in data]


2. 🪄 Быстрое глубокое копирование объекта

copy = pickle.loads(pickle.dumps(obj, -1))


3. 📤 Отправка JSON через POST

r = requests.post(url, json=payload)


4. 📌 Проверка, что файл — это символическая ссылка

is_symlink = Path(p).is_symlink()


5. 🧩 Быстрое объединение нескольких словарей

merged = {**d1, **d2, **d3}


6. 🧪 Проверить, что список отсортирован

is_sorted = all(a <= b for a, b in zip(lst, lst[1:]))


7. 🔍 Найти все подстроки по регулярке

matches = re.findall(r'\d+', text)


8. 🌐 Извлечь домен из URL

domain = urlparse(url).netloc


9. 🧬 Преобразовать список строк в int

nums = list(map(int, str_list))


10. 📚 Считать CSV в список словарей

rows = list(csv.DictReader(open('file.csv')))


11. 🔄 Превратить int в побитовую строку

bits = f'{num:08b}'


12. 📤 Сохранить объект в JSON-файл

json.dump(obj, open('data.json', 'w'), indent=2)


13. 🧮 Убрать пустые строки из списка

lines = [l for l in lines if l.strip()]


14. 🧾 Распарсить query string в словарь

params = dict(parse_qsl('a=1&b=2'))


15. 🧰 Получить уникальные строки, сохранив порядок

seen = set(); uniq = [s for s in seq if not (s in seen or seen.add(s))]


16. 📈 Получить индекс максимального значения

idx = max(range(len(lst)), key=lst.__getitem__)


17. 🪛 Проверить, что список вложенный (2D)

is_nested = all(isinstance(i, list) for i in lst)


18. 🧱 Убрать все символы кроме букв и цифр

clean = re.sub(r'\W+', '', text)


19. ⌛ Ограничить время выполнения кода

signal.alarm(2); try: ... except: ...


20. 📦 Получить структуру всех полей dataclass

fields = [f.name for f in dataclasses.fields(MyClass)]

📌 Часть 1
📌 Часть 2

@pythonl

Читать полностью…

Python/ django

Что общего у Netflix, Google и Spotify

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

Познакомиться с этим универсальным языком можно на бесплатном курсе Нетологии. За 5 занятий вы не просто изучите теорию, а создадите 2 рабочих проекта.

Сначала напишете планировщик задач. Начнёте с кода, который запрашивает дату и описание задачи, добавите условные операторы и циклы, встроите в программу уникальную функцию с помощью готовых библиотек. После создадите телеграм-бота и перенесёте в него функционал планировщика — на выходе у вас будет полноценное приложение.

Помощь в практике и ответы на вопросы сможете получить в чате с экспертами и однокурсниками.

Записывайтесь

Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5xHtdRi

Читать полностью…

Python/ django

Inside ML: индустриальные секреты машинного обучения

Онлайн-магистратура «Искусственный интеллект» от Вышки запускает мини-курс, где разберём, как ML работает в индустрии: от Computer Vision и AutoML до LLM и мультиагентных систем.

Что вас ждёт:
— 5 вебинаров от практиков из Avito, Сбера, Ozon
— Кейсы: как выигрывают Kaggle AutoML Grand Prix, запускают CV-системы и внедряют LLM в бизнес
— Q&A с экспертами: можно спросить о задачах и карьерном треке в ML

Для кого:
— IT-специалистам, которые хотят перейти в ML или усилить свою экспертизу
— Тем, кто хочет понять, что востребовано сейчас на рынке
— Тем, кто планирует сделать шаг в сторону applied ML или сменить специализацию внутри IT

Когда: до 15 июля, 19:00 (по МСК)

🔗 Зарегистрироваться

Читать полностью…

Python/ django

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода

Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules.

Вот минимальный приём, который делает это прозрачно:


import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"


@pythonl

Читать полностью…

Python/ django

🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструментах. Инструмент умеет автоматически генерировать распределенные трейсы для приложений на Java, Python, .NET, Node.js и Go без необходимости правки исходного кода.

Под капотом используется eBPF для низкоуровневой инструментации, что особенно ценно для скомпилированных языков вроде Go. Трейсы сразу экспортируются в формате OpenTelemetry, что позволяет интегрироваться с любыми совместимыми системами мониторинга.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🧠 Как превратить любой Python-объект в читаемый словарь — даже если это класс с кучей вложенных полей

Когда работаешь с API, логами или дебажишь сложные объекты — хочется увидеть весь объект как словарь, без .__dict__, без сериализации, без ручного разбора.

Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.

python 
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace

def deep_to_dict(obj):
if isinstance(obj, dict):
return {k: deep_to_dict(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [deep_to_dict(i) for i in obj]
elif is_dataclass(obj):
return asdict(obj)
elif isinstance(obj, SimpleNamespace):
return deep_to_dict(vars(obj))
elif hasattr(obj, '__dict__'):
return deep_to_dict(vars(obj))
else:
return obj


🧠 Рекурсивный разбор любых Python-объектов

📌 Подходит для логирования, сериализации, отладки
📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами
📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл

Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.

Читать полностью…

Python/ django

🪶 DotDotGoose — open-source инструмент для ручного подсчёта объектов на изображениях

Нужен простой способ разметить объекты на фото — вручную и без лишних настроек? DotDotGoose — идеальный выбор. Это десктоп‑приложение, написанное на Python, для учёта объектов путём простого "тыкания" точек.

🔧 Возможности:
- Быстрое добавление точек и классов объектов
- Зум, панорама, тёмная тема
- Экспорт в CSV, JSON и изображения с разметкой
- Поддержка пользовательских метаданных
- Готовые билды под Windows и macOS

Установка:

git clone https://github.com/persts/DotDotGoose
python3 -m venv ddg-env
source ddg-env/bin/activate
python -m pip install --upgrade pip
python -m pip install -r ./DotDotGoose/requirements.txt


👨‍🔬 Для всех, кому нужен точный ручной подсчёт на изображениях.

🔗 GitHub:

@pythonl

Читать полностью…

Python/ django

⚡ Ускорь Python без переписывания — скомпилируй код в .so через Cython

Нужно ускорить медленные куски Python-кода (циклы, численные вычисления, парсинг)?

Не обязательно лезть в C или переписывать всё под NumPy. Можно взять свой .py`-файл, добавить одну строчку и превратить его в бинарный .so`‑модуль через Cython — без изменения логики.



# 1. Устанавливаем Cython и компилятор
pip install cython
sudo apt install build-essential

# 2. Переименовываем файл
mv myscript.py myscript.pyx

# 3. Создаём setup.py
echo '
from setuptools import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("myscript.pyx"))
' > setup.py

# 4. Компилируем
python3 setup.py build_ext --inplace

# 5. Используем как обычный модуль
python3 -c 'import myscript; myscript.main()'


@pythonl

Читать полностью…

Python/ django

👾 GREMLLM — теперь у ваших багов есть сознание

GREMLLM — это необычный Python-класс, в котором все методы и свойства создаются динамически с помощью LLM. Вы описываете, *что за объект вы хотите*, и дальше GREMLLM сам решает, что должно происходить при вызове методов или обращении к полям.

📦 Установка:


pip install gremllm


🔧 Пример:



from gremllm import Gremllm

counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value) # → 6?
print(counter.to_roman_numerals()) # → VI?


🧩 Возможности:
– Динамическое поведение: всё определяется "на лету" с помощью LLM
– Поддержка OpenAI, Claude, Gemini, и локальных моделей
– Wet Mode: можно строить цепочки вызовов (методы возвращают объекты)
– Verbose Mode: выводит, какой код был сгенерирован
– Умная обработка ошибок и настройка через наследование

⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код.

🔗 Репозиторий: https://github.com/ur-whitelab/gremllm

@pythonl

Читать полностью…

Python/ django

📊 Vizro — low-code инструмент для создания дашбордов на Python. Интересный проект для аналитиков и дата-инженеров, позволяющий собирать интерактивные дашборды буквально в несколько строк кода. Основан на связке Plotly + Dash + Pydantic, но скрывает сложность за простым декларативным синтаксисом в JSON/YAML/Python-словарях.

Библиотека имеет встроенные best practices по визуализации данных и возможность кастомизировать всё через Python/JS, когда low-code возможностей недостаточно. Готовые дашборды выглядят профессионально и сразу готовы к продакшену.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🔥 CAI — ИИ для поиска багов от Alias Robotics

Что это такое?
CAI — лёгкий фреймворк для создания AI-агентов, которые помогают автоматизировать поиск и проверку уязвимостей.

Как это работает?
- Загружаете YAML-конфиги
Опишите сценарии поиска багов, тестов и отчётов в простых текстовых файлах.
- LLM-агенты
AI-модель эмулирует протоколы (SSH, HTTP, TCP и другие) и взаимодействует с целевыми системами как настоящий тестировщик.
- Генерация и «разогрев» данных
Создавайте синтетические запросы для обучения и быстро запускайте агента на своих данных.
- Оффлайн-оценка
Собирайте результаты тестов и анализируйте их без постоянного подключения к интернету.

Зачем использовать CAI?
- Ускоряет подготовку и запуск тестов безопасности
- Позволяет гибко настраивать шаги проверки
- Повышает прозрачность и повторяемость отчётов о найденных уязвимостях

Установка и запуск:


git clone https://github.com/aliasrobotics/cai.git
cd cai
# отредактируйте config.yaml и запустите агента


📌 Github

@pythonl

Читать полностью…

Python/ django

⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов.

Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🔟 однострочных функций, полезных для продвинутых Python-разработчиков:

1. Разворачиваем вложенных списков любой глубины


flatten = lambda lst: [x for sub in lst for x in (flatten(sub) if isinstance(sub, list) else [sub])]


2. Декоратор для мемоизации результатов функции

memoize = lambda f: (lambda *args, _cache={}, **kwargs: _cache.setdefault((args, tuple(kwargs.items())), f(*args, **kwargs)))


3. Разбиение списка на куски длины n

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


4. Уникализация последовательности с сохранением порядка

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


5. Глубокий доступ к вложенным ключам словаря

deep_get = lambda d, *keys: __import__('functools').reduce(lambda a, k: a.get(k) if isinstance(a, dict) else None, keys, d)


6. Преобразование Python-объекта в читаемый JSON

pretty_json = lambda obj: __import__('json').dumps(obj, ensure_ascii=False, indent=2)


7. Чтение последних n строк файла (аналог tail)

tail = lambda f, n=10: list(__import__('collections').deque(open(f), maxlen=n))


8. Выполнение shell-команды и возврат вывода

sh = lambda cmd: __import__('subprocess').run(cmd, shell=True, check=True, capture_output=True).stdout.decode().strip()


9. Быстрое объединение путей

path_join = lambda *p: __import__('os').path.join(*p)


10. Группировка списка словарей по значению ключа

group_by = lambda seq, key: {k: [d for d in seq if d.get(key) == k] for k in set(d.get(key) for d in seq)}


@pythonl

Читать полностью…

Python/ django

📊 Python for Nonprofits — книга и код для анализа данных в НКО

Это полноценное учебное пособие по Python, заточенное под нужды некоммерческих организаций.

Автор — Kenneth Burchfiel — собрал в одном репозитории и книгу, и рабочие блокноты для реального анализа данных.

▪ Импорт и очистка данных (CSV, API, Google Sheets)
▪ Описательная статистика, линейные регрессии
▪ Визуализация: графики, интерактивные карты (Plotly, Folium)
▪ Dash-приложения и публикация дашбордов
▪ Всё оформлено как Jupyter-книга: можно читать, запускать, менять

Кому подойдёт:
– начинающим дата-аналитикам, которые хотят делать полезные проекты
– НКО, работающим с открытыми данными и отчётами
– преподавателям, ищущим учебный курс по Python с практикой

💡 Можно читать онлайн или скачать как книгу. Лицензия MIT — можно использовать где угодно.

📘 Подробнее и исходники: https://github.com/kburchfiel/pfn

@pythonl

Читать полностью…

Python/ django

🐍 Продвинутый Python‑совет дня

💡 Используй слоты (`__slots__`) для оптимизации классов, когда тебе нужно много однотипных объектов.

По умолчанию Python хранит атрибуты объектов в словаре (`__dict__`), что удобно, но неэффективно по памяти. Если ты точно знаешь, какие поля будут у объекта — зафиксируй их:


class Point:
slots = ("x", "y") # только эти атрибуты допустимы

def __init__(self, x, y):
self.x = x
self.y = y```


📈 Выгода:

- Уменьшает использование памяти до 30–50% для миллионов объектов
- Ускоряет доступ к полям (нет __dict__)
- Запрещает создание произвольных новых атрибутов (меньше багов)

🧠 Подходит:

- Для численных расчётов (вместо namedtuple)
- При генерации большого количества однотипных объектов
- В data-heavy структурах (например, парсеры, AST, графы и т.п.)

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

👉 Видео

Читать полностью…

Python/ django

🚀 Быстрый HTTP‑сервер на базе asyncio.Protocol

В этом гайде показано как создать минималистичный HTTP‑сервер на Python, используя низкоуровневый API asyncio.Protocol, что делает его быстрее и гибче, чем решения на основе asyncio.Streams или фреймворков типа FastAPI.

Основные пункты:

1. Сокет-обработчик (`ConnectionHandler`)
- Наследуется от asyncio.Protocol — реакции на события connection_made, data_received, connection_lost.
- Хранит буфер, транспорт и маппинг маршрутов.

2. Парсинг HTTP-запросов
- В data_received накапливаются байты.
- Запрос считается полным при обнаружении \r\n\r\n.
- Затем из заголовков извлекаются method, path, другие поля.

3. Маршрутизация через декоратор
- Класс HTTPServer собирает функции-обработчики для путей.
- Обработчик вызывает либо корутины, либо возвращает статический HTML.

4. Отправка ответа
- Используется asyncio.create_task внутри колбэка, чтобы запустить send_response — где формируется ответ с HTTP-кодом, заголовками и телом.
- После write() соединение закрывается.

5. Простой запуск сервера
- Через loop.create_server() создаётся экземпляр ConnectionHandler.
- serve_forever() запускает обработку соединений.

6. Высокая производительность
Сервер обрабатывает ~100 000 запросов за ~4.2 с при нагрузке 100 одновременных соединений, в то время как FastAPI справляется за ~32 с :contentReference[oaicite:1]{index=1}.

Зачем это полезно:

- Полный контроль над TCP-соединениями и буферами.
- Существенно выше скорость при простых HTTP-API.
- Отличная демонстрация возможностей, которые остаются скрытыми за высокоуровневыми фреймворками.

Поддержка сообщества:
На Reddit статья получила высокую оценку как "отличный материал по Asyncio Protocols"

https://jacobpadilla.com/articles/asyncio-protocols

@pythonl

Читать полностью…

Python/ django

🔥 Совет дня Python: быстро получить частоту элементов в списка

Когда нужно узнать, сколько раз каждый элемент встречается в списке — не пиши вручную циклы. Используй collections.Counter:


from collections import Counter

items = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
freq = Counter(items)

print(freq)
# 👉 Counter({'apple': 3, 'banana': 2, 'orange': 1})


📌 Удобно для:
— подсчёта слов
— анализа логов
— быстрой статистики по спискам



@pythonl

Читать полностью…

Python/ django

🐍 Часть2: ещё 20 полезных Python-однострочников для тех, кто пишет в прод

Первая часть зашла — вот ещё 20 трюков, которые реально экономят время и делают код лаконичнее и чище:

1. 📥 Считать все строки из файла, убрав перевод строки


lines = Path('file.txt').read_text().splitlines()


2. 🔐 Получить SHA256-хеш строки

hash = hashlib.sha256(b"your text").hexdigest()


3. 🧮 Конвертация списка чисел в строку

s = ','.join(map(str, numbers))


4. 🛑 Быстро остановить выполнение скрипта

raise SystemExit("Done")


5. 🧠 Распечатать размер объекта в памяти

print(sys.getsizeof(obj))


6. 🧬 Плоское разворачивание вложенных списков

flat = [i for sub in nested for i in sub]


7. 🔄 Инвертировать булеву маску NumPy

inv_mask = ~mask


8. 🧽 Удалить дубликаты из списка, сохранив порядок

seen = set(); uniq = [x for x in lst if not (x in seen or seen.add(x))]


9. 📦 Распаковка аргументов из словаря в функцию

result = func(**params)


10. 🔎 Получить словарь с топ-N частыми значениями

top_n = dict(Counter(lst).most_common(5))


11. 🪓 Ограничить длину строки с троеточием

s_trunc = s[:n] + '…' if len(s) > n else s


12. 🎛️ Массив из 0 и 1 случайной длины

binary = [random.randint(0, 1) for _ in range(n)]


13. 🗓️ Получить сегодняшнюю дату в формате ISO

today = date.today().isoformat()


14. 📁 Получить размер файла в мегабайтах

size_mb = os.path.getsize(path) / 1024**2


15. 🔀 Перемешать словарь (Python 3.7+ сохраняет порядок)

shuffled = dict(random.sample(d.items(), len(d)))


16. ⏳ Измерить время выполнения блока

with contextlib.redirect_stdout(io.StringIO()): exec('code')


17. 🧱 Разделить список на чанки по N

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


18. 🕵️ Проверить, работает ли хост (без ping)

ok = socket.create_connection((host, port), timeout=2)


19. 🛠️ Быстро заменить подстроку без re

s = s.replace('from', 'to', 1)


20. 🧪 Убедиться, что все элементы списка — числа

is_all_numbers = all(isinstance(x, (int, float)) for x in lst)


📌 Если нужна часть 3 — ставь лайк.

@pythonl

Читать полностью…

Python/ django

👩‍💻 Всем программистам посвящается!

Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:

Выбирай своё направление:

👩‍💻 Python — t.me/python_ready
🤔 InfoSec & Хакинг — t.me/hacking_ready
🖥 SQL & Базы Данных — t.me/sql_ready
🤖 Нейросетиt.me/neuro_ready
👩‍💻 C/C++ — /channel/cpp_ready
👩‍💻 C# & Unity — t.me/csharp_ready
👩‍💻 Linux — t.me/linux_ready
📖 IT Книги — t.me/books_ready
👩‍💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
👩‍💻 Backend — t.me/backend_ready
📱 GitHub & Git — t.me/github_ready
👩‍💻 Java — t.me/java_ready
👩‍💻 Весь IT — t.me/it_ready
👩‍💻 Bash & Shell — t.me/bash_ready
🖼️ DevOpst.me/devops_ready
🖥 Design — t.me/design_ready

📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

Читать полностью…

Python/ django

🐍 20 реально полезных однострочных функций на Python — для тех, кто пишет в прод

Забудь про [::-1] и lambda x: x*2. Вот подборка, где однострочники реально ускоряют работу, убирают лишний код и улучают читаемость кода:

1. 📁 Получить все файлы с расширением .py рекурсивно


files = list(Path('.').rglob('*.py'))


2. 🧪 Быстрое тестирование скорости любого выражения

timeit(lambda: your_func(), number=1000)


3. 🔎 Показать все публичные методы объекта

[m for m in dir(obj) if not m.startswith('_')]


4. 🧼 Очистить DataFrame от строк с NaN

df_clean = df.dropna()


5. 🔄 Быстрое многопоточное выполнение функций

list(ThreadPoolExecutor().map(func, iterable))


6. 🗜️ Получить частоты значений в списке

dict(Counter(my_list))


7. 🔍 Найти дубликаты в списке

dups = [x for x, c in Counter(lst).items() if c > 1]


8. 📦 Сжать список без None

filtered = list(filter(None, data))


9. 🕵️‍♂️ Ловить и логировать все исключения в одном выражении

try: foo() except Exception as e: logging.exception(e)


10. 📊 Преобразовать список словарей в DataFrame

pd.DataFrame(list_of_dicts)


11. 🔄 Инвертировать словарь с проверкой на коллизии

inv = {v: k for k, v in d.items() if list(d.values()).count(v) == 1}


12. ⏳ Простой таймер

start = time(); result = fn(); print(f'{time() - start:.2f}s')


13. 🔢 Перемешать и взять подмножество

sample = random.sample(big_list, k=100)


14. 🧠 Получить максимальный элемент по ключу

max(data, key=lambda x: x.score)


15. 📐 Убрать отступ у многострочной строки

dedented = textwrap.dedent(multiline_string)


16. 🛠️ Простой retry без библиотек

[func() for _ in range(5) if not success()][-1]


17. 📚 Преобразовать JSON-файл в объект

data = json.loads(Path('file.json').read_text())


18. 🧮 Быстрая нормализация NumPy-вектора

v /= np.linalg.norm(v)


19. 🧾 Отобразить все переменные окружения, отсортированные по имени

print('\n'.join(f'{k}={v}' for k, v in sorted(os.environ.items())))


20. 🔄 Преобразовать словарь в query string

query = urlencode(params)


@pythonl

Читать полностью…

Python/ django

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс в четверг

10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Савве

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwZX5NF

Читать полностью…

Python/ django

🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики

Если у тебя проект с тяжёлыми модулями (`pandas`, torch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib.

Вот как это выглядит на практике:



import importlib

# Обёртка для ленивого импорта
def lazy_import(name):
return importlib.util.LazyLoader(importlib.import_module(name))

# Использование
np = lazy_import('numpy')
# numpy ещё не загружен

# Теперь загрузится:
print(np.array([1, 2, 3]))


@pythonl

Читать полностью…

Python/ django

ML-инженеры, какая встреча!

19 июля в Москве снова пройдет Turbo ML Conf от группы Т-Технологий. В этом году — еще масштабнее!

В программе 5 тематических потоков, продовые кейсы и технологии.

Среди спикеров — эксперты Т-Банка, Сбера, Яндекса и других ведущих специалистов.

Будет много нетворкинга, прикладные доклады, настольные игры, лимитированный мерч. Участие бесплатное.

Успейте оставить заявку

Читать полностью…

Python/ django

📓🦙 NotebookLlama — open-source альтернатива NotebookLM!

Практически полный функционал NotebookLM — в опенсорсе.

✔️ Собирает базу знаний из документов — с точным разбором через LlamaCloud
✔️ Автоматически пишет резюме и строит mind map-графы
✔️ Позволяет генерировать подкасты (работает на базе ElevenLabs)
✔️ Позволяет вести чат с агентом по документам
✔️ Метрики и аналитика через opentelemetry

🛠 Всё в открытом репо — можешь форкать, кастомизировать, заменять компоненты под себя.

Установка:


git clone https://github.com/run-llama/notebookllama


GitHub: https://github.com/run-llama/notebookllama
Попробовать в LlamaCloud: https://cloud.llamaindex.ai

@ai_machinelearning_big_data


#AI #ML #LLM #opensource #NotebookLM

Читать полностью…

Python/ django

⚡️ Почему лучшие разработчики всегда на шаг впереди?

Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.

ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pro_python_code
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg

Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🖥 Chatgpt для кода в тг: @Chatgpturbobot -

📕Ит-книги: /channel/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi

Подпишись, чтобы всегда знать, куда двигаться дальше!

Читать полностью…

Python/ django

🧩 Задача для разминки

Что выведет этот код? Попробуй догадаться без запуска.


class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))


🤔 Подумай: сколько раз вызовется eq?

🎯 Разбор:

print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется eq, будет True.

print(a == b[0])
🔍 Прямое сравнение — снова eq.

print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается eq.

💥 Вывод будет:


Comparing!
True
Comparing!
True
Comparing!
1



📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".

🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.

⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.

@pythonl

Читать полностью…

Python/ django

⚔️ LIEF — мощная библиотека для работы с исполняемыми файлами, которая поддерживает ELF, PE и MachO-форматы. Этот проект позволяет не только анализировать структуру бинарников, но и модифицировать их — добавлять секции, менять символы или даже работать с Objective-C метаданными.

Инструмент выделяется кроссплатформенностью и мультиязычным API (Python, Rust, C++). Библиотека умеет дизассемблировать код под разные архитектуры и интегрируется с Ghidra/BinaryNinja. Будет полезно для реверс-инжиниринга, анализа вредоносного ПО или кастомной линковки.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🎯 Хочешь следить за загрузкой своей GPU прямо из Python?

Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.

📦 Зависимости: установленный nvidia-smi и Python 3.6+

🧠 Код:


import subprocess

def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")

get_gpu_utilization()


📊 Вывод будет примерно такой:

GPU 0: 23% load | 412 MiB / 8192 MiB

🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi

@pythonl

Читать полностью…
Subscribe to a channel