Рэліз Python 3.8

Найбольш цікавыя навіны:

  • Якое прысвойвае выраз:

    Новы аператар := дазваляе прысвойваць значэнні зменным усярэдзіне выразаў. Напрыклад:
    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

Дадаць каментар