Выпуск Python 3.6
Python 3.6 (выпущен 23 декабря 2016) стал началом эпохи "Modern Python". Он добавил синтаксис, который до сих пор считается стандартом современного кода.
Форматированные строки (f-strings)
Главная фича версии — PEP 498 (formatted string literals).
Теперь можно вставлять выражения прямо в строку:
name = "Fred"
age = 50
print(f"He said his name is {name} and he is {age} years old.")
- Выражения вычисляются во время выполнения
- Поддерживают любой Python-код внутри
{} - Быстрее и удобнее
.format()и%-форматирования ([Python documentation][1])
print(f"Result: {10 * 5}")
Аннотации переменных (Variable type hints)
PEP 526 добавил возможность аннотировать переменные:
from typing import List
count: int = 0
users: List[str] = ["Alice", "Bob"]
- Работает для глобальных и локальных переменных
- Используется статическими анализаторами (mypy, IDE)
- Python не проверяет типы во время выполнения ([Studocu][2])
Оптимизация словарей (dict internals)
Python 3.6 переработал внутреннюю реализацию dict:
- уменьшение использования памяти (~20–25%)
- улучшение производительности
- сохранение порядка вставки стало возможным (как побочный эффект CPython)
⚠️ Важно: в 3.6 это было implementation detail, а не гарантия языка (официально закреплено в 3.7)
Улучшения интерпретатора и стандартной библиотеки
- оптимизации
asyncio - улучшения
ssl,socket,enum - ускорение создания объектов
- улучшенная инициализация модулей ([That's Good Enough][3])
Улучшения синтаксиса
- numeric literals с
_для читаемости:
money = 1_000_000
- расширения unpacking:
a, b, *rest = [1, 2, 3, 4]
Изменения в языке
- добавлены async generators
- async comprehensions (async for)
- улучшения работы с исключениями и debug-инструментами
История патчей (Subversions)
- 3.6.15 (Сен 2021) — последний релиз, EOL (End-of-Life)
- 3.6.9 (Июль 2019) — security fixes (SSL / urllib)
- 3.6.4 (Дек 2017) — исправления asyncio и memory leaks
- 3.6.0 (Дек 2016) — первоначальный релиз