Я тут немного потыкал Python 3.8 (а заодно и pyenv). Новых модулей и синтаксических бомбезных штук там ещё нет, но пару интересностей уже добавили:
- Можно распаковывать аргументы прям в строке
return
илиyield
:
rest = (4, 5, 6)
return 1, 2, 3, *rest
def h():
rest = (4, 5, 6)
yield 1, 2, 3, *rest```
2. `reversed` может переворачивать `dict`, который начиная с Python 3.6/3.7 сохраняет порядок вставки ключей:
```list(reversed({i: i+1 for i in range(5)}.items()))
# [(4, 5), (3, 4), (2, 3), (1, 2), (0, 1)]```
3. Появилась функция `math.dist` для вычисления Эвклидова расстояния между двумя точками:
```math.dist((1, 1), (2, 2))
# 1.4142135623730951```
4. А ещё функция `math.prod`, которая работает как `sum`, но только умножает. Например, вот факториал 5:
```math.prod(range(1, 6))
# 120```
5. Модуль `statistics` понемногу жирнеет. Появилась функция для вычисления среднегеометрического (корень произведения). Все эти функции нужны потому что они не теряют точности, когда это возможно:
```statistics.geometric_mean([2, 4, 8])
# 4.0
(2 * 4 * 8) ** (1/3)
# 3.9999999999999996```
Мелочи, а приятно.