Найбольш цікавыя навіны:
- Якое прысвойвае выраз:
Новы аператар := дазваляе прысвойваць значэнні зменным усярэдзіне выразаў. Напрыклад:
if (n := len(a)) > 10:
print(f"List is too long ({n} элементы, expected <= 10)") - Positional-only аргументы:
Цяпер можна паказаць, якія параметры функцый можна перадаваць праз сінтаксіс найменных аргументаў, а якія не. Прыклад:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)f(10, 20, 30, d=40, e=50, f=60) # OK
f(10, b=20, c=30, d=40, e=50, f=60) # памылка, `b` не можа быць найменным аргументам
f(10, 20, 30, 40, 50, f=60) # памылка, `e` павінен быць найменным аргументамГэтая змена дае распрацоўнікам спосаб засцерагчы карыстачоў сваіх API ад змен у назове аргументаў функцый.
- Падтрымка f-радкоў = для самодокументирующих выразаў і адладкі:
Дададзены цукар для спрашчэння адладкавых / лагіруючых паведамленняў.
N = 42
print(f’Hello world {n=}.’)
# надрукуе "Hello world n=42." - Выпраўлена ключавое слова continue у блоку finally (раней яно не працавала).
Іншае:
- Можна відавочна паказаць шлях да кэша байткода замест дэфолтнага __pycache__.
- Debug і Release зборкі выкарыстоўваюць адзін і той жа ABI.
Крыніца: linux.org.ru