Дальнейшая разработка[править | править код]
Python Enhancement Proposal («PEP») — это документ со стандартизированным дизайном, предоставляющий общую информацию о языке Python, включая новые предложения, описания и разъяснения возможностей языка. PEP предлагаются как основной источник для предложения новых возможностей и для разъяснения выбора того или иного дизайна для всех основных элементов языка. Выдающиеся PEP рецензируются и комментируются Гвидо ван Россумом, имеющим в проекте статус «великодушного пожизненного диктатора». 12 июля 2018 года Гвидо ван Россум отправил себя в бессрочный отпуск с должности «великодушного пожизненного диктатора»[84][85].
График и совместимость[править | править код]
Серии Python 2.x и Python 3.x в течение нескольких выпусков будут существовать параллельно, при этом серия 2.x будет использоваться для совместимости и скорее всего в неё будут включены некоторые возможности серии 3.x. PEP 3000 содержит больше информации о планируемых выпусках.
Python 3.0 обратно не совместим с предыдущей серией 2.x. Код Python 2.x часто будет выдавать ошибки при исполнении в Python 3.0. Динамическая типизация Python вместе с планами изменения нескольких методов словарей делает механический перевод из Python 2.x в Python 3.0 очень сложным. Однако утилита «2to3» уже способна сделать большинство работы по переводу кода, указывая на подозрительные его части с помощью комментариев и предупреждений. PEP 3000 рекомендует держать исходный код для серии 2.x и делать выпуски для Python 3.x с помощью «2to3». Полученный код не следует редактировать, пока программа не будет работоспособной в Python 2.x.
Возможности[править | править код]
Основные изменения, внесённые в версии 3.0[86][87][88][89]:
Синтаксическая возможность для аннотации параметров и результата функций (например, для передачи информации о типе или документирования).
Полный переход на unicode для строк.
Введение нового типа «неизменяемые байты» и типа «изменяемый буфер». Оба необходимы для представления бинарных данных.
Новая подсистема ввода-вывода (модуль io), имеющая отдельные представления для бинарных и текстовых данных.
Абстрактные классы, абстрактные методы (доступно уже в 2.6).
Иерархия типов для чисел.
Выражения для словарей и множеств {k: v for k, v in a_dict} и {el1, el2, el3} (по аналогии со списковыми выражениями). Эта возможность была также добавлена в Python 2.7
Изменения print из встроенного выражения во встроенную функцию. Это позволит модулям делать изменения, подстраиваясь под разное использование функции, а также упростит код. В Python 2.7 эта возможность активируется вводом from __future__ import print_function.
Перемещение reduce (но не map или filter) из встроенного пространства в модуль functools (использование reduce существенно менее читабельно по сравнению с циклом).
Удаление некоторых устаревших возможностей, поддерживаемых в ветке 2.x для совместимости, в частности: классы старого стиля, целочисленное деление с обрезанием результата как поведение по умолчанию, строковые исключения, неявный относительный импорт, оператор exec и т. п.
Реорганизация стандартной библиотеки.
Новый синтаксис для метаклассов.
Изменён синтаксис присваиваний. Стало возможным, например, присваивание a, *rest, b = range(5). С другой стороны, формальные параметры функций вроде def foo(a, (b, c)) более недопустимы.
Do'stlaringiz bilan baham: |