Python.org
Python Release Python 3.15.0rc2
The official home of the Python Programming Language
Ровно как и год назад вновь выходит новая версия python с нововведениями
Python 3.15: что нового
📢 Уже завтра - 1 октября по графику выходит финальная версия Python 3.15. Релиз-кандидаты уже вышли, значит список изменений финальный
Что можем выделить интересного
1. Ленивые импорты (PEP 810)
Ключевое слово
Ограничение: работает только на уровне модуля. Внутри функции, класса или try/except будет SyntaxError
2. Распаковка в comprehensions (PEP 798)
Звёздочка теперь работает внутри генераторов списков, множеств и словарей. Это замена вложенным циклам и itertools.chain
3. frozendict и sentinel
frozendict (PEP 814) - неизменяемый словарь, хешируемый, если хешируемы его ключи и значения. Это не подкласс dict.
sentinel (PEP 661) - встроенный способ создавать уникальные значения-маркеры вместо привычного
4. UTF-8 по умолчанию (PEP 686)
5. Tachyon - профилировщик в стандартной библиотеке (PEP 799)
Подключается к уже запущенному процессу по PID, без перезапуска и правок кода, почти не нагружая его. Умеет строить flame graph. Полезно, когда что-то тормозит в работающем сервисе
6. Подсказки в ошибках
Если написать
7. JIT-компилятор стал быстрее
На x86-64 Linux прирост около 8-9% по сравнению со стандартным интерпретатором. Он всё ещё экспериментальный, и в продакшен его пока не стоит включать
📌 Перед переходом на 3.15 проверьте зависимости: не все библиотеки поддержат новую версию в первые дни
#IT_новости
Python 3.15: что нового
📢 Уже завтра - 1 октября по графику выходит финальная версия Python 3.15. Релиз-кандидаты уже вышли, значит список изменений финальный
Что можем выделить интересного
1. Ленивые импорты (PEP 810)
Ключевое слово
lazy откладывает загрузку модуля до первого обращения к нему. Приложение стартует быстрее, если часть импортов нужна не в каждом запускеlazy import json
lazy from pathlib import Path
print("Старт") # json и pathlib ещё не загружены
data = json.loads('{"a": 1}') # json загружается здесь
Ограничение: работает только на уровне модуля. Внутри функции, класса или try/except будет SyntaxError
2. Распаковка в comprehensions (PEP 798)
Звёздочка теперь работает внутри генераторов списков, множеств и словарей. Это замена вложенным циклам и itertools.chain
lists = [[1, 2], [3, 4], [5]]
[*L for L in lists] # [1, 2, 3, 4, 5]
3. frozendict и sentinel
frozendict (PEP 814) - неизменяемый словарь, хешируемый, если хешируемы его ключи и значения. Это не подкласс dict.
sentinel (PEP 661) - встроенный способ создавать уникальные значения-маркеры вместо привычного
object()4. UTF-8 по умолчанию (PEP 686)
open() без параметра encoding теперь читает файлы в UTF-8 независимо от системы. Раньше на Windows могла использоваться локальная кодировка (например, cp1251). 5. Tachyon - профилировщик в стандартной библиотеке (PEP 799)
Подключается к уже запущенному процессу по PID, без перезапуска и правок кода, почти не нагружая его. Умеет строить flame graph. Полезно, когда что-то тормозит в работающем сервисе
6. Подсказки в ошибках
Если написать
[1, 2, 3].push(4), Python подскажет: Did you mean '.append'?. Подсказки есть для типичных методов из JavaScript, Java, Ruby и C#, так что тем, кто пришёл из других языков, станет проще7. JIT-компилятор стал быстрее
На x86-64 Linux прирост около 8-9% по сравнению со стандартным интерпретатором. Он всё ещё экспериментальный, и в продакшен его пока не стоит включать
📌 Перед переходом на 3.15 проверьте зависимости: не все библиотеки поддержат новую версию в первые дни
#IT_новости
❤2
Если нужна помощь с дата аналитикой, пересдача которой у большинства до 31 октября, самое время приступить 💻
Результаты ребят, которым уже закрыл, выше 👆
Результаты ребят, которым уже закрыл, выше 👆
👨💻2