Выпуск Python 3.7

Python 3.7 (выпущен 27 июня 2018) стал одной из самых важных версий современного Python. Он принёс удобные абстракции, улучшил отладку и закрепил ключевые поведенческие особенности языка.

Датаклассы (@dataclass)

Главная фича версии — PEP 557 (dataclasses).

Теперь можно создавать классы для хранения данных без лишнего boilerplate-кода:

from dataclasses import dataclass

@dataclass
class User:
    username: str
    is_admin: bool = False

Python автоматически генерирует:

Это делает код чище и ближе к "структурам данных" из других языков.

Гарантированный порядок словарей

Начиная с Python 3.7, поведение dict стало официальной частью языка:

порядок вставки элементов теперь гарантирован

data = {}
data["a"] = 1
data["b"] = 2
data["c"] = 3

print(list(data.keys()))
# ['a', 'b', 'c']

Это было реализовано раньше как оптимизация, но в 3.7 стало спецификацией языка.

Встроенный дебаггер (breakpoint())

PEP 553 добавил новую встроенную функцию:

breakpoint()

Она заменяет:

import pdb; pdb.set_trace()

Особенности:

Контекстные переменные (contextvars)

PEP 567 добавил поддержку контекстных переменных для async-кода:

Улучшения типизации

Новые возможности стандартной библиотеки

Улучшения интерпретатора

Изменения в языке

История патчей (Subversions)


Оффициальная документация 3.7