понедельник, 5 марта 2012 г.

Что нового в Python 3.3

Вчера была выпущена версия Python 3.3.0 alpha 1. Что же нас ждёт?



  1. PEP 3118: новая реализация memoryview и документация протокола буфера. Новая реализация memoryview полностью устраняет все проблемы с владением и циколм жизни динамически выделяемых полей в Py_buffer, приводившие к различным падениям программ. Кроме того, были исправлены некоторые функции, которые приводили к падениям или возвращали неверный результат для не-непрерывного или многомерного ввода.
  2. PEP 393: гибкая реализация строк. строки unicode были изменены для поддержки различных внутренних представлений, зависящих от символа с наибольшим номером (1,2 или 4 байта) в строке. Это позволяет более эффективно использовать память и при этом даёт полный доступ к UCS-4. Для поддержки существующего API различные представления могут существовать параллельно, однако со временем от этой поддержки планируется отказаться. Изменения не затрагивают Python-код и касаются только C API
  3. PEP 3151: переработана иерархия OS и IO исключений. Иерархия исключений стала проще и детальнее. Теперь вам не надо заботиться выбором подходящего типа исключений между OSError, IOError, EnvironmentError, WindowsError, nmap.error, socket.error и select.error. Все эти исключения объединены теперь в OSError. Старые имена оставлены в качестве псевдонимов для совместимости. Более подробный перевод этого PEP.
  4. PEP 380: синтаксис делегации субгенератору. Добавлено выражение yield from, которое позволяет генератору делегировать часть своих операций другому генератору. Благодаря этому стало возможным вынести часть кода, содержащую yield в другой генератор.  Более подробный перевод этого PEP.
  5. PEP  409: подавление контекста исключений. Представлен новый синтаксис, который позволяет отключить отображение контекста цепных исключений. Благодаря этому можно добиться более понятных сообщений об ошибках  в приложениях, где происходит конвертация типов исключений.  Более подробный перевод этого PEP.
  6. PEP 3155: квалифицированные имена классов и функций. Объекты функций и классов теперь имеют новый атрибут __qualname__, в котором отражён "путь" от модуля верхнего уровня к их определению. Для глобальных функций и классов он совпадает с __name__. Для других функций и классов из этого атрибута можно получить информацию о том, где находится их определение и как можно получить к ним доступ из глобальной области видимости. Например:
  7. Другие изменения в языке:
    • добавлена поддержка unicode псевдонимам и именованным последовательностям (ошибка 12753)
    • проверка на равенство range() теперь возвращает результат, основанный на равенстве последовательностей, генерируемых этими объектами (ошибка 13201)
    • count(), find(), rfind(), index() и rindex() примененные к bytes и bytearray теперь в качестве первого аргумента принимают число в интервале 0-255 (ошибка 12170)
    • memoryview объект теперь hashable, когда подлежащий объект так же hashable (ошибка 13411)
  8. Кроме этого были произведены некоторые изменения в различных библиотеках. Подробнее смотрите тут

Комментариев нет:

Отправить комментарий