Softerra Компьютерра | Ferrа | Инфо-Бизнес | Домашний компьютер | Game.exe 
Softerra - лучший русский сайт о софте
Rambler's Top100

 Статья рубрики "Linuxоид"

Язык программирования Python. Часть V.

Пятая статья данного цикла. Альтернативные реализации. Что нового в 2.0.

[28.11.2001, Олег Бройтман, phd@phd.pp.ru]

Другие реализации

Хотя у 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
 for expr2 in sequence2 ...
 for exprN in sequenceN
 if condition
]
. Это эквивалентно коду
result = []
for expr1 in sequence1:
 for expr2 in sequence2:
 ...
 for exprN in sequenceN:
 if (condition):
 result.append(expression)

Расширенное присваивание (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 (упрощают написание механизмов импорта).


Обсудить статью в форуме

Почитать на ту же тему на нашем сайте:


<< Предыдущая статья рубрикиСледующая статья рубрики >>
("Стремителен ли полет пингвина?")("Рукопись, найденная в бутылке: глава II")
Вернуться к оглавлению рубрики
Олег Бройтман
phd@phd.pp.ru
 
http://phd.pp.ru/

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта "Софтерра"


 Новые статьи на сайте

Просмотр DVD фильмов на FreeBSD

Несколько плееров для просмотра DVD в FreeBSD и немного теории

[29.10.2002, Станислав Лапшанский, "Linuxоид"]


Разбиение дисков и инсталляция Linux на LVM (часть 2)

Установка линукс на два диска с логическими томами...

[25.10.2002, Владимир Холманов, "Linuxоид"]


Домашняя фабрика грез. Часть 2

О представлении цветного изображения и прочем.

[24.10.2002, Алексей Стахнов, "Технологии"]


Более ранние статьи >>



 Новости софта

И защищает, и "расшаривает"... [17:58, 14.10.2002]

SolidShare - полезная программа для пользователей интернета


"Тощий" браузер [17:49, 14.10.2002]

Slim Browser 3.1 улучшает функциональность IE


Нужно-ненужная программа [16:05, 14.10.2002]

"Программа без особого назначения"


Более ранние новости >>



 Игры и мультимедиа. Новости

1с и Activision решили сотрудничать [18:06, 11.10.2002]

Фирма "1С" будет издавать серию игр от компании Activision в России, на территории стран СНГ и Балтии


Семнадцатый Чемпионат по онлайновым "СамоГонкам" [18:04, 11.10.2002]

В понедельник начнется настоящая игра


Распродажа пирамид [11:48, 10.10.2002]

"Пирамида. Gold Edition" в продаже


Более ранние новости >>



 Новости свободных систем

Lcrzo 4.16 [14:48, 16.10.2002]

Модифицированы некоторые модули...


KDE 3.1... забегая вперед [14:37, 16.10.2002]

Грядут большие перемены...


mnoGoSearch 3.2.7 [10:37, 15.10.2002]

Есть изменения...


Более ранние новости >>



 Пресс-релизы

Электронная цифровая подпись для Microsoft Office [15:43, 21.3.2002]

Компания MultiSoft анонсирует свою разработку – программный продукт «ЭЦП для Microsoft Office», обеспечивающую целостность и авторство электронных документов Word и Excel при их хранении и распространении через локальную или глобальную сеть.


Компания «БИФИТ» на форуме «Инфобизнес-2002» [14:14, 21.3.2002]

На проходившем с 12 по 15 марта форуме «Инфобизнес-2002» компания «БИФИТ» представила свою новую разработку iBank 2 - передовое решение для электронного банкинга.


Конвертирование позитива в негатив [13:16, 21.3.2002]

Группа разработчиков Invention Pilot, Inc выпустила новый программный продукт – Silver Pilot.


Более ранние новости >>






Информация о сервере
Copyright (c) 2000 ИД "Компьютерра"
Email: inform@softerra.ru
Телефон: (095) 232-22-63
Рейтинг@Mail.ru Создание сервера (с) 2000 Individ
Работает на Saitistika
Карта сайта
Главная страница