Читать «Изучаем Python, 3-е издание» онлайн - страница 11

Unknown Author

•    Появится расширенная реализация операции распаковки: инструкция, поддерживающая универсальную форму присваивания последовательности, такая как a, b, *rest = some_sequence, теперь будет работать, как и * rest, а = stuff. Таким образом, число элементов слева и справа от инструкции присваивания больше не должно совпадать (глава 11).

•    Автоматический режим распаковки кортежей через присваивание последовательности для функций будет недоступен. Больше нельзя будет записать def foo(a, (b, с)):, вместо этого необходимо будет выполнять явное присваивание последовательности: def foo(a, be)b, с = be (глава 11).

•    Встроенная функция xrange() будет переименована в range(). То есть в этой версии Python будет существовать только функция range() (глава 13).

•    В протоколе итераций метод X.nextO будет переименован

BX.__next__(), и появится новая встроенная функция next(X), которая будет вызывать метод X.__next__() объекта (главы 13 и 17).

•    Встроенные функции zip(), map() и filter() будут возвращать итераторы. Чтобы вернуться к логике использования списков, следует применять list() (главы 13 и 17).

•    Функции могут включать необязательные комментарии, описывающие аргументы и результаты: так, в результате объявления def foo(x: "spam", у: list(range(3))) ->42*2: к объекту-функции на этапе времени выполнения будет присоединен атрибут-словарь foo.func_an-notations: {'х': "spam”, 'у': [0, 1, 2], "return”: 84} (глава 15).

•    Новая инструкция nonlocal х, у позволит выполнять присваивание переменным в области видимости функции (глава 16).

•    Функция apply(func, args, kws) будет удалена. Вместо нее следует использовать синтаксическую конструкцию func(*args, **kws) (главы 16 и 17).

•    Встроенная функция reduce() будет удалена. Вместо нее организуйте циклы, как показано в этой книге; lambda, map() и filter() будут сохранены в версии 3.0 (глава 17).

•    Все импортирование по умолчанию будет выполняться по абсолютному пути, а собственный каталог пакета будет пропускаться: для выполнения импорта по относительному пути, как это делается сейчас, следует использовать синтаксическую конструкцию from . import (глава 21).

•    Все классы будут классами нового стиля и будут поддерживать современные новые расширения (глава 26).

•    Наследование class Spam(object), необходимое для создания нынешних классов, будет необязательным для классов. В версии 3.0 и нынешняя «классика», и классы «нового стиля» будут относиться к тому, что сейчас называется классами нового стиля (глава 26).

•    В инструкции try конструкция except name превратится в конструкцию except name as value (глава 27).

•    В инструкции raise конструкция raise Е, V должна будет записываться как raise E(V), то есть экземпляр исключения должен создаваться явно (глава 27).

•    Включен оператор контекста исключений with/as, описываемый в этой книге (глава 27).

•    Все пользовательские и встроенные исключения описываются классами, а не строками (глава 28).

•    Все исключения, определяемые пользователем, должны наследовать встроенный BaseEsception - корневой класс иерархии классов исключений (Exception - это его подкласс и его вполне можно использовать в качестве базового для организации своей иерархии). Встроенный класс StandardException будет ликвидирован (глава 28).