Forwarded from Находки в опенсорсе
PEP 810: Explicit lazy imports
На обсуждение вышел новый PEP, который предлагает добавить в Python 3.15 новый вид импортов.
https://peps.python.org/pep-0810/
Как будет работать?
Импорты не будут подгружаться до момента первого обращения к объекту.
Зачем?
- Быстрее загружать модули
- Позволит убрать много импортов из функций / методов
- Позволит убрать
- Позволит решать циклические импорты
- Убирает необходимость в
Детали реализации
Планируется добавить:
- Функцию
- Специальный атрибут на уровне модуля
-
-
-
- Байткод
- Ошибки в именах модулей тоже будут ленивыми https://peps.python.org/pep-0810/#reification
Из забавного:
Реализация: https://github.com/LazyImportsCabal/cpython/tree/lazy
Обсуждение: как вам?
Бонус: меня тут в комментах спрашивают, куда я пропал. Я пропал в опенсорсе, пилю
https://github.com/wemake-services/django-modern-rest
| Поддержать | YouTube | GitHub | Чат |
На обсуждение вышел новый PEP, который предлагает добавить в Python 3.15 новый вид импортов.
https://peps.python.org/pep-0810/
lazy import json
lazy from json import dumps
Как будет работать?
Импорты не будут подгружаться до момента первого обращения к объекту.
import sys
lazy import json
print('json' in sys.modules) # Модуля еще нет
# Загрузка начинается вот тут:
result = json.dumps({"hello": "world"})
print('json' in sys.modules) # Теперь он загружен
Зачем?
- Быстрее загружать модули
- Позволит убрать много импортов из функций / методов
- Позволит убрать
if TYPE_CHECKING: import some_module
, было множество предложений по добавлению import type
конструкции, пример: https://discuss.python.org/t/type-only-imports/96755- Позволит решать циклические импорты
- Убирает необходимость в
LazyLoader
и страшных вещей вроде https://scientific-python.org/specs/spec-0001Детали реализации
Планируется добавить:
- Функцию
__lazy_import__
(аналог __import__
для импорта )- Специальный атрибут на уровне модуля
__lazy_modules__
, где будут храниться ленивые импорты текущего модуля-
types.LazyImportType
как тип нового "ленивого" модуля (аналог `types.ModuleType`)-
sys.lazy_modules
для списка ленивых модулей глобально-
sys.set_lazy_imports_filter
для глобальных настроек импортов, что? 🤯- Байткод
IMPORT_NAME
получит флаг, является ли импорт ленивым- Ошибки в именах модулей тоже будут ленивыми https://peps.python.org/pep-0810/#reification
Из забавного:
import *
не будет доступен в lazy
режиме.
# SyntaxError: lazy from ... import * is not allowed
lazy from json import *
Реализация: https://github.com/LazyImportsCabal/cpython/tree/lazy
Обсуждение: как вам?
Бонус: меня тут в комментах спрашивают, куда я пропал. Я пропал в опенсорсе, пилю
django-modern-rest
. Простую и удобную библиотеку для REST API в Django. Пока на стадии pre-alpha, но уже скоро будет первый релиз. Можно уже ставить ⭐, чтобы потом всем говорить, что первыми узнали про новую модную штуку!https://github.com/wemake-services/django-modern-rest
| Поддержать | YouTube | GitHub | Чат |
Python Enhancement Proposals (PEPs)
PEP 810 – Explicit lazy imports | peps.python.org
This PEP introduces syntax for lazy imports as an explicit language feature:
❤16👎5🤮2💩2🤔1
Forwarded from Елизавета Грейм
Встретимся завтра в 14:00 в прямом эфире Moscow Python Podcast🎙
Обсудим с Александром Сербулом, руководителем направления больших данных, высоконагруженных систем и машинного обучения в Битрикс24 настоящий кейс использования Python для сложных задач:
🟤 почему Python решает многие задачи элегантнее;
🟤 как занести Python в большую компанию и обучить PHP-разработчиков;
🟤 PyTorch, Scikit-learn и Matplotlib для нейросетей и математики;
🟤 как Apache Superset и SQLAlchemy помогли построить гигантское BI-облако.
👉 Когда и во сколько: 17 октября в 14:00 по Москве
🔵 Смотреть на YouTube
🔵 Смотреть на Rutube
🔵 Смотреть в VK Видео
Обсудим с Александром Сербулом, руководителем направления больших данных, высоконагруженных систем и машинного обучения в Битрикс24 настоящий кейс использования Python для сложных задач:
👉 Когда и во сколько: 17 октября в 14:00 по Москве
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Почему Python выбирают для масштабирования
Чтобы научиться программировать и разбираться в тонкостях Python 3.12 записывайтесь на базовый курс Learn Python — https://clck.ru/3MuShF
Ведущие – Григорий Петров и Михаил Корнеев
Ссылки выпуска:
Курс Learn Python — https://learn.python.ru/advanced
Канал…
Ведущие – Григорий Петров и Михаил Корнеев
Ссылки выпуска:
Курс Learn Python — https://learn.python.ru/advanced
Канал…
❤3🔥2