Библиотека Интернет Индустрии I2R.ru |
|||
|
Язык программирования Python. Часть V.Хотя у Python существует главная реализация, называемая CPython (потому что написана на C), существуют и альтернативные реализации интерпретатора. Jython состоит из двух частей; это, во-первых, компилятор из Питона в Джава byte-code, что позволяет писать апплеты на Питоне, а не Джаве; а во-вторых, интерпретатор Питона, написанный на Джаве. Stackless Python - специальный патч к CPython, позволяющий не использовать стандартный стек; это позволяет существенно увеличить глубину рекурсии и создавать такие нестандартные вещи как сопрограммы и генераторы (впрочем, в Python 2.2 генераторы реализованы без использования Stackless). Vyper - это альтернативная реализация на языке Caml; Vyper - это и интерпретатор, и компилятор. Интересное название, кстати. Viper - это "гадюка" (в обоих смыслах этого слова). Что нового в последних версиях Питона После трех увольнений (о чем я писал в первой статье), команда разработчиков нашла наконец теплое местечко, и развитие Питона понеслось вперед семимильными шагами. Python 2.1 и 2.2 правильнее было бы нумеровать 3.0 и 4.0. Python 1.6 Между версиями 1.5.2 и 2.0 Гвидо, еще работая в CNRI, выпустил версию 1.6. Это контрактная версия (Contractual Obligations release), которую он обязался выпустить перед первым увольнением. На нее не следует обращать большого внимания, а можно сразу перейти к 2.0. Python 2.0 Наиболее существенное в этой версии - изменение подхода к разработке. Дерево CVS переехало на SourceForge. Благодаря этому процесс разработки стал более открытым, более видимым для пользователей, появились механизмы обратной связи (bug tracker). Появился механизм Python Enhancement Proposals (PEPs). PEP - это формализованный документ, предлагающий введение в язык новой конструкции, или в интерпретатор новой функциональности, или в библиотеку нового кода. Написать PEP может любой, и после обсуждения разработчики принимают решение - включать ли новый код в Питон, или отвергнуть. Самая большая новая особенность Python 2.0 - поддержка Unicode. Появился новый тип данных - уникодовые строки, новые литералы, новые функции манипуляции строками, преобразования ASCII строк в Unicode и обратно, таблицы соответствия различных кодировок (koi8-r, cp1251 и прочие русские кодировки включены). Модуль codecs содержит функции перекодирования, включая функцию open, которая позволяет открыть файл с указанием кодировки файла, и кодировки данных в программе. Операции чтения/записи буду перекодировать данные автоматически. Соответственно, изменилась реализация регулярных выражений - они полностью поддерживают unicode. У строк теперь появились методы: "Hello".upper(). Но строки по-прежнему неизменяемые объекты. Методы строк возвращают в результате операции новую строку. Методы нужны для того, чтобы единообразным образом обрабатывать как ASCII, так и Unicode строки. Следующее новшество - списковое включение (list comprehension). Синтаксис его прост: [ expression for expr in sequence1 Это эквивалентно коду result = [] Расширенное присваивание (a += b) долгое время вызывало ожесточенные споры - включать его в Питон или не включать. Теперь споры закончились. Python 2.0 включает полную поддержку расширенного присваивания для всех операций (+, - и все остальные), включая переопределение его в классах, реализуемых программистом. Если при этом a - неизменяемый объект, будет выполнена операция a + b и результат присвоен в a. Если же a - изменяемый объект, его значение и будет изменено без создания нового объекта. В реализации классов программист сам решает, изменять или не изменять объект. Появился новый, упрощенный синтаксис для вызова функций с переменным числом параметров. Это особенно удобно для вызова родительского конструктора - раньше для этого приходилось использовать apply. Появилась возможность переопределять в классах встроенный оператор in. Были изменены алгоритмы сравнения и удаления рекурсивных структур данных. Появился новый модуль gc для управления сборкой мусора; этот модуль может отслеживать рекурсивные структуры, на которые больше нет ссылок, и удалять их. В версии 2.0 наконец-то появился пакет Distutils - набор средств для создания программ инсталляции ваших модулей, пакетов и программ. В эту версию включен также большой пакет PyXML, содержащий как низкоуровневые средства (PyExpat - интерфейс к expat), так и высокоуровневые - SAX2 и DOM. В нем применен механизм для установки собственных пакетов пользователя, так что import xml будет импортировать пользовательские пакеты, а не дистрибутивные питоновские. Этим пользуется, например, 4Suite. При инсталляции 4Suite не затирает PyXML, но import xml будет импортировать 4Suite, а не PyXML. Появилась поддержка OpenSSL. Если в момент компиляции Питона на машине имеются библиотеки OpenSSL - они будут подлинкованы к модулю socket, а библиотека httplib обретет обработчик протокола https. Появилось много новых модулей, среди которых atexit (регистрация списка функций деинициализации модулей), mmap (отображаемые в память файлы, поддержка которых есть в UNIX и Windows), gettext (интерфейс к GNU gettext), robotparser (разбор файлов robots.txt), zipfile (ZIP-файлы, конечно же) и imputil (упрощают написание механизмов импорта). |
|
2000-2008 г. Все авторские права соблюдены. |
|