Теперь в Python 3.15 можно будет использовать распаковку прямо в comprehensions (списковых, словарных и генераторных выражениях).
Python Steering Council внёс небольшое уточнение — и потребовал использовать явные циклы вместо
yield from, чтобы сохранить простоту и симметрию между синхронными и асинхронными выражениями.💡 Это сделает comprehensions более мощными и при этом предсказуемыми.
Наконец-то появятся явные ленивые импорты через ключевое слово
lazy.Теперь можно будет писать:
lazy import numpy
from pandas lazy import DataFrame
Импорт произойдёт только при первом обращении к модулю, что ускорит запуск и сократит время старта больших проектов.
Также добавят
sys.get_lazy_imports() и уточнят приоритет между флагами среды (PYTHON_LAZY_IMPORTS, -X, sys.set_lazy_imports()).#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32💯9😢3
Ты уже настроил своих AI-агентов? 🤖
Приглашаем на бесплатный вебинар от OTUS «Обзор AI-технологий для разработчиков: от идей до рабочих решений»: https://clc.to/aKgtYg
Что будет, когда отладка — не ад, а код пишется в разы быстрее?
Мы покажем:
• Как встроить AI в ваш CI/CD и автоматизировать рутину
• Инструменты для генерации кода, тестов и даже документации
• Реальные кейсы использования LLM в продакшне
Спикер — Алексей Романовский, разработчик с 15-летним опытом. Он не теоретик, а практик, который уже прошел путь интеграции AI в рабочие процессы.
Важно: это открытый урок полного курса «AI для разработчиков». Места в группе тают быстрее, чем кэш при неправильной инвалидации — успевайте в группу ноября по скидке!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Приглашаем на бесплатный вебинар от OTUS «Обзор AI-технологий для разработчиков: от идей до рабочих решений»: https://clc.to/aKgtYg
Что будет, когда отладка — не ад, а код пишется в разы быстрее?
Мы покажем:
• Как встроить AI в ваш CI/CD и автоматизировать рутину
• Инструменты для генерации кода, тестов и даже документации
• Реальные кейсы использования LLM в продакшне
Спикер — Алексей Романовский, разработчик с 15-летним опытом. Он не теоретик, а практик, который уже прошел путь интеграции AI в рабочие процессы.
Важно: это открытый урок полного курса «AI для разработчиков». Места в группе тают быстрее, чем кэш при неправильной инвалидации — успевайте в группу ноября по скидке!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
This media is not supported in your browser
VIEW IN TELEGRAM
Онлайн-IDE, созданная специально для обучения и совместного кодинга. Простая, быстрая и дружелюбная к новичкам.
Основные фишки:
— Совместное редактирование кода в реальном времени (на Y.js)
— Безопасная авторизация — вручную или через Google
— Группы и проекты — удобно организуйте командную работу
— Рисование прямо в IDE — идеально для преподавателей
— Подсветка и линтинг — помогает писать чистый код
— Чат и голосовые комнаты — как в Discord, прямо внутри проекта
— Умное автосохранение — ничего не потеряется
✨ PyTogether создан для обучения и совместного программирования — без сложных настроек, терминалов и плагинов. Просто заходите, создавайте проект и кодьте вместе.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
Короткий ответ — очень часто.
В CPython каждое целое число — это объект
PyLongObject*, хранящийся в куче. Даже операция i + 1 создаёт новый объект.Если бы каждое число выделялось через
malloc/free, арифметика была бы в сотни раз медленнее, чем машинная инструкция ADD.Но Python применяет несколько хитрых оптимизаций.
Добавим вывод в функцию аллокации чисел и запустим код:
for i in range(0, 100_000):
print(i + 1)
Результат:
Allocating number object 100904 times
Кажется, создаётся новый объект на каждой итерации.
Но без
print():for i in range(0, 100_000):
a = i + 1
Теперь:
Allocating number object 905 times
То есть новые объекты создаются редко — большинство просто переиспользуются.
Функция сложения в CPython выглядит примерно так:
static PyLongObject *
long_add(PyLongObject *a, PyLongObject *b)
{
stwodigits z = medium_value(a) + medium_value(b);
return _PyLong_FromSTwoDigits(z);
}
_PyLong_FromSTwoDigits решает, брать ли объект из freelist (списка свободных объектов) или выделять новый:PyLongObject *v = _Py_FREELIST_POP(PyLongObject, ints);
if (v == NULL) v = PyObject_Malloc(sizeof(PyLongObject));
После освобождения объект возвращается обратно во freelist, а не в систему.
Результат эксперимента:
102 ALLOCATING
99193 REUSING
99% чисел просто переиспользуются!
Для диапазона
-5..1024 объекты создаются заранее:PyLongObject small_ints[_PY_NSMALLNEGINTS + _PY_NSMALLPOSINTS];
Такие числа никогда не аллоцируются — просто возвращаются из таблицы. Это ещё одна оптимизация CPython.
CPython использует собственный пуловый аллокатор (
pymalloc). Память разбита на пулы фиксированного размера (по 256 КБ).Выделение из пула выполняется почти мгновенно, без системных вызовов
malloc() или mmap().Физическая память подгружается лениво — по мере использования.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6💯1
🎁 И мозг прокачать, и макбук утащить!
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍1