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

  • 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







 , ,






URL записи