Релиз Python 3.8

good-penguin.png

Наиболее интересные новшества:

  • Assignment expression

    Новый оператор := позволяет присваивать значения переменным внутри выражений. Например:

    if (n := len(a)) > 10:
        print(f"List is too long ({n} elements, expected <= 10)")
    
  • Positional-only parameters

    Теперь можно указать, какие параметры функций можно передавать через синтаксис keywords, а какие нет. Пример:

    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 cannot be a keyword argument
    f(10, 20, 30, 40, 50, f=60)           # e must be a keyword argument
    
    Это изменение дает разработчикам способ обезопасить пользователей своих API от изменений в названии аргументов функций.
  • f-strings support = for self-documenting expressions and debugging

    Добавлен сахар для упрощения debug/log сообщений.

    n = 42
    print(f'Hello world {n=}.')
    # prints Hello world n=42.
    
  • Исправлено ключевое слово continue в блоке finally (раньше оно не работало).

Прочее:

  • Можно явно указать путь к кэшу байткода вместо дефолтного __pycache__.
  • Debug и Release сборки используют один и тот же ABI

>>> Подробности

©  Linux.org.ru