14 жовтня вийшла офіційна версія Python 3.8 (бета була доступна ще влітку). Нову гілку будуть підтримувати ще 18 місяців, а патчі виходитимуть до 2024 року. Випуск оновлень планується кожні два місяці, починаючи з грудня.
Що нового у версії 3.8
Найважливіше — оператор присвоєння, позначається як :=
(поширеніша назва: walrus operator, через подібність з моржем). Він дозволяє визначати значення у складних виразах, щоб не потрібно було двічі викликати функцію в умовних операторах і циклах.
Підтримка нового синтаксису для аргументів у функції. Використання /
відокремлює аргументи, яким можна вказувати значення лише в послідовному порядку, від тих, яким можна надавати значення у довільному порядку. Так функції Python зможуть повністю відтворювати поведінку функцій на С та уникати залежності від назв (якщо вони зміняться в майбутньому).
/
доповнює собою раніше додану ознака *
, що відокремлює змінні, для яких може бути застосовано тільки привласнення в формі «змінна = значення». Наприклад, у функції def f (a, b, /, c, d, *, e, f):
змінні a
і b
можуть бути присвоєні тільки в порядку перерахування значень, змінні e
і f
, тільки через привласнення «змінна = значення» , а змінні c
і d
будь-яким із зазначених способів:
f (10, 20, 30, 40, e = 50, f = 60)
f (10, 20, с = 30, d = 40, e = 50, f = 60)
Доданий новий API для C, він дозволяє налаштувати параметри ініціалізації Python. Тож вбудовувати функціонал Python у застосунки на C буде простіше.
Виклики Runtime Audit Hooks надають застосункам і фреймворкам на Python доступ до низькорівневої інформації про виконання скрипту. Так вони можуть проводити аудит процесу (відстежувати імпорт модулів, відкривання файлів, використання трасування, запуск коду через exec, eval і run_mod тощо).
Модуль pickle тепер підтримує протокол Pickle 5, що полегшує передачу великих обсягів даних між процесами в Python і скорочує кількість операцій копіювання пам'яті.
У модулі typing з'явились нові фічі: клас TypedDict для асоціативних масивів, тип Literal для обмеження параметрів або значення, що повертається декількома зумовленими значеннями ("Literal ['connected', 'disconnected']")
, і конструкція Final, що визначає значення змінних, функцій, методів і класів, які не можна змінювати.
З усіма нововведеннями можна ознайомитись за посиланням.
Ще немає коментарів