Python/ django
60.9K subscribers
2.19K photos
96 videos
48 files
2.91K links
по всем вопросам @haarrp

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

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
Download Telegram
SafeWave_10 — десять лет бороздим океан карьеры

Если ты студент и держишь курс на развитие в IT, то 26 августа у тебя есть шанс поймать попутный ветер и попасть на празднование юбилея SafeBoard — программы IT-стажировок от «Лаборатории Касперского».
На одной волне летнего open air окажутся студенты, выпускники программы SafeBoard и эксперты ЛК

Когда: 26 августа 2025
Где: Офис Kaspersky, Москва, Ленинградское шоссе, 39А, стр. 3 + онлайн трансляция

Что в программе:

• Реальные истории от бывших стажеров, ставших экспертами (спойлер — один из них стал СТО)
• Интерактивная лекция о том, как разные типы людей двигают команду к большому успеху
• Музыкальное импров-шоу, розыгрыш мерча, активити-точки и HR-зона для желающих попасть в нашу команду
• И куда же без нетворкинга с компанией единомышленников

Стажировка в Kaspersky — как экспедиция под наставничеством опытных капитанов, регистрируйся чтобы подготовиться к большому плаванию!

https://kas.pr/x7yw?erid=2W5zFK8k4mv

Реклама. АО «Лаборатория Касперского» ИНН 7713140469
4👍3
📸 Разработчик запустил свой код на сервере, имея лишь возможность изменения содержимого комментария в Python-скрипте

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

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

🔗 Ссылка - *клик*

@pythonl
19👍10🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 УСКОРЕНИЕ КОДА ЗА СЧЁТ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ

💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.

Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.

Пример:


# Медленно: обращение к свойствам объекта в цикле
class Processor:
def __init__(self, data):
self.data = data

def compute(self):
total = 0
for item in self.data:
total += item * item
return total



# Быстрее: кэшируем ссылку на data как локальную переменную
class Processor:
def __init__(self, data):
self.data = data

def compute(self):
data = self.data # локальная переменная
total = 0
for item in data:
total += item * item
return total

# Прирост в скорости особенно заметен при больших объёмах данных```
👍2410🔥7
Разбираем тестовое задание в Яндекс на позицию Junior аналитика данных

Тестовое задание — важная часть трудоустройства аналитика. Это шанс показать свои навыки на практике и получить оффер мечты.

Приглашаем на бесплатный вебинар, где Андрон Алексанян — эксперт в области аналитики и CEO школы аналитики Simulative — в прямом эфире разберет тестовое задание в Яндекс на позицию Junior аналитика данных.

⚡️На вебинаре вы:
🟠узнаете, какие навыки и знания необходимы для успешного выполнения заданий;
🟠поймёте, что хочет увидеть работодатель;
🟠получите советы и лайфхаки;
🟠вместе с Андроном разберете в прямом эфире реальный пример тестового 🔥


Чему именно научимся на вебинаре:
🟠С помощью Pandas проанализируем Яндекс-запросы за несколько недель, загрузив их из json-файла;
🟠Найдем закономерности и отличия использования сервиса на мобильных устройствах и компьютерах;
🟠Разберем фишки Pandas: сложную агрегацию, маппинг, конкатенацию, чейнинг и др.


🕗 Настоятельно рекомендуем не пропускать — для зрителей у нас есть особый бонус, который обеспечит вам уверенный старт в вашей карьере.

😶Зарегистрироваться на бесплатный вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
🖥 Разбираем Новые версии: Django 5.2.5 и Python 3.13.6

Django 5.2.5 (релиз — 6 августа 2025)
- Тип релиза: патч-релиз, устраняющий ошибки версии 5.2.4.
- Ключевые исправления:
- Восстановлена поддержка стратегии UNNEST в QuerySet.bulk_create() для PostgreSQL.
- Улучшена фильтрация по составному первичному ключу через tuple-выражения.
- Исправлены ошибки валидации модели при использовании GeneratedField, Q и Case.
- Добавлена совместимость с docutils версии 0.22.
- Исправлен сбой при использовании ManyToManyField с составным первичным ключом — обновлены проверки fields.E347.

Python 3.13.6 (релиз — 6 августа 2025)
- Тип релиза: шестой maintenance-релиз ветки 3.13, включает около 200 исправлений, улучшений сборки и обновлений документации.
- Ключевые особенности Python 3.13 по сравнению с 3.12:
- Новый усовершенствованный REPL с многострочным редактированием, цветным выводом и цветными трассировками ошибок.
- Экспериментальный free-threaded build mode (отключение GIL), доступен в виде python3.13t`/`python3.13t.exe.
- Встроенный экспериментальный JIT-компилятор (по-умолчанию отключён).
- locals() теперь имеет определённые семантики при мутации возвращаемого словаря.
- Включена изменённая версия mimalloc (по-умолчанию, если доступно), обязательна для free-threaded режима.
- Докстринги теперь очищаются от начальной отступной, что снижает объём `.pyc`-файлов.
- Новый бэкенд dbm.sqlite3 используется по умолчанию при создании файлов.
- Минимальная поддерживаемая версия macOS повысилась до 10.13 (High Sierra).
- Безопасность:
- Исправлена проблема, при которой фильтры filter="data" и filter="tar" в tarfile можно было обойти с помощью специально созданных сим- и жёстких ссылок.

Вывод:
- Django 5.2.5 — важный патч-релиз LTS-ветки, рекомендован для обновления производственных систем.
- Python 3.13.6 — очередной maintenance-релиз с множеством багфиксов и улучшений, особенно интересен разработчикам, работающим с производительностью (REPL, JIT, free-threaded).

Если нужно, могу подсказать, как безопасно обновиться или протестировать эти версии в вашем проекте.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥9👍5😁4
🧪 uQLM — движок для SQL‑запросов к LLM, разработанный в CVS Health

Что если к языковой модели можно обращаться как к обычной базе данных?

💡 uQLM (Universal Query Language for Models) позволяет писать SQL‑подобные запросы, чтобы:

Обращаться к LLM как к таблице
Фильтровать, агрегировать и комбинировать ответы
Подключать собственные модели и источники данных
Использовать привычный синтаксис SQL без prompt-инженерии

📌 Пример запроса:

SELECT generate_response(prompt)
FROM gpt4
WHERE prompt LIKE '%explain%'
LIMIT 5;


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

🔗 GitHub: https://github.com/cvs-health/uqlm

@pythonl
11👍3🔥3😁3
🐍 Почему Python `deepcopy()` такой медленный и что использовать вместо него

Функция copy.deepcopy() кажется удобной: она создаёт полную копию объекта со всеми вложенными структурами. Но на практике она часто оказывается очень медленной и становится бутылочным горлышком в проектах. Давайте разберёмся почему так происходит и какие есть альтернативы.

🔥 Почему deepcopy() тормозит
1. Рекурсия на всём дереве объектов
Python проходит по каждому вложенному элементу, даже если их сотни тысяч.

2. Определение метода копирования
Для каждого объекта проверяется, можно ли вызвать __deepcopy__, или приходится идти стандартным путём.

3. Memo-словарь для ссылок
Чтобы избежать бесконечных циклов при копировании (например, объект ссылается сам на себя), Python ведёт словарь уже скопированных элементов. Это полезно, но замедляет работу.

4. Реализация на чистом Python
В отличие от сериализации (`pickle`), deepcopy() не ускорена на уровне C, поэтому работает медленнее.

📊 Пример замеров скорости


import copy, pickle, time

data = [[i for i in range(1000)] for _ in range(1000)]

# deepcopy
start = time.time()
a = copy.deepcopy(data)
print("deepcopy:", time.time() - start)



# pickle
start = time.time()
b = pickle.loads(pickle.dumps(data))
print("pickle roundtrip:", time.time() - start)



# list comprehension (для списков списков)
start = time.time()
c = [sub[:] for sub in data]
print("manual copy:", time.time() - start)


💻 Результат (у вас может отличаться, но смысл тот же):

- deepcopy: ~2.5 сек
- pickle: ~0.8 сек
- ручное копирование: ~0.02 сек (!)

Когда что использовать

copy.deepcopy()
Подходит, если структура очень сложная, а вам нужна стопроцентно независимая копия.

pickle.loads(pickle.dumps(obj))
Быстрее на больших структурах, плюс удобно, если данные нужно сохранять.

json.loads(json.dumps(obj))
Хорошо для простых словарей и списков с базовыми типами.

Ручное копирование (list comprehension, dict comprehension)
Лучший вариант, если вы знаете структуру данных и хотите максимум скорости.

📌 Итог
deepcopy() — это универсальный инструмент, но он платит за универсальность скоростью.
Если важна производительность — используйте сериализацию или ручные методы копирования, они могут быть в десятки и сотни раз быстрее.

Ставь 🔥, сохраняй себе в копилку Python-трюков, чтобы не забыть 😉

@pythonl
1🔥23👍64
🌟 Большой гайд по TOML и tomllib на Python

TOML стал стандартом для конфигурации Python-проектов благодаря своей простоте и читаемости. Начиная с Python 3.11, вы можете парсить TOML-файлы встроенным модулем tomllib без установки дополнительных зависимостей. Это удобно для работы с pyproject.toml и конфигами инструментов вроде pytest, mypy и black.

Хотя tomllib поддерживает только чтение файлов, его возможностей хватает для большинства задач. Для записи и сложного редактирования TOML можно использовать библиотеки toml или tomlkit. В статье подробно разбираются примеры чтения конфигов и работа с pyproject.toml.

🔗 Ссылка - *клик*

@pythonl
6👍3