LINUX.ORG.RU

Python3


103

10

Всего сообщений: 582

См. также:

 , , , , , , , ,

Релиз Python 3.8

Группа Разработка

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

  • Присваивающее выражение:

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

    if (n := len(a)) > 10:
        print(f"List is too long ({n} elements, 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.

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

 ,

anonymous ()

Еще новости

Июль 2019

2018

2017

2016

2015

2015

2014

2012

2009

2008

Форум

Сегодня

Вчера

Ноябрь 2019

Ноябрь 2019

Октябрь 2019