Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход. Python поддерживает множественное наследование, переопределение инфиксных операторов, причем можно переопределить операцию как для левого операнда, так и для правого; в версии 2.1 есть полное переопределение операторов сравнения (механизм rich comparison для объектов, поддерживающих частичное упорядочивание, например, матриц).
В Python имеются исключения и механизм их перехвата; таким образом программист может построить правильную обработку ошибок и создать надежную программу. Встроенные механизмы интроспекции позволяют опрашивать интерфейсы объектов во время выполнения программы. Например, можно узнать количество и имена параметров функции; эту интроспекцию использует Zope, чтобы подготовить правильный список параметров функции при вызове ее из web.
Из современных языков Python можно сравнить в первую очередь с Java и Perl. Python выполняет все обещания, которые дала, но не выполнила Java. Python очень хорошо переносим. Он работает на всех платформах, на которых есть Java, и еще на многих. Мало найдется таких платформ, на которые Python не перенесен. Я не говорю про UNIX и Windows, конечно - с точки зрения переносимости куда интереснее такие платформы как Mac, Amiga, Palm, RiscOS, AS/400 и многие другие. Для особых любителей Java есть Jython. Он состоит из двух частей: во-первых, это интерпретатор Pyhon, написанный на Java, а во-вторых это компилятор Python в байт-код Java. В сравнении с Perl - Python как язык ему совершенно равномощен, но избавлен от великого множества неприятностей и неудобств, присущих Perl. Python обладает богатой стандартной библиотекой, плюс великим множеством модулей, доступных в Интернете. Для пользователей Windows есть пакет win32, из которого доступны практически все функции Windows API, DDE, COM.
Существует Русскоязычная Группа Пользователей Python и Zope. Сайт группы расположен по адресу http://zope.net.ru/. На список рассылки можно подписаться, послав по адресу mailto:[email protected]?body=subscribe+python письмо с телом subscribe python.
Основные структуры управления
Python - вполне обычный, можно сказать, "традиционный" язык программирования. Все привычные конструкции в языке есть - условный оператор if, циклы for и while, функции, классы, модули, пакеты (иерархические совокупности модулей). Нет цикла do-while и оператора case.
Из менее традиционных операторов - возбуждение исключений raise и их перехват try-except-else и try-finally. Впрочем, исключения начинают занимать свое место и в других современных языках, так что чем-то революционным их назвать нельзя.
Для многих становится неожиданным, что в Питоне блочная структура обозначается отступами, а не словами begin/end (или скобками). К этому, однако, быстро привыкаешь, и это становится очень удобно.
Для языка Python создано несколько интерпретаторов. В дальнейшем я буду говорить про основной интерпретатор CPython (интерпретатор, написанный на C).
В этом интерпретаторе базовые (встроенные) типы данных - целое, длинное целое, вещественное, комплексное числа, строки, списки, кортежи и словари.
Целое в Питоне соответствует типу long того компилятора C, которым скомпилирован интерпретатор. Длинное целое - это целое число потенциально бесконечной длины; с помощью таких чисел можно производить вычисления неограниченной разрядности; длинные целые эмулируются библиотекой, встроенной в интерпретатор. Вещественное соответствует типу double. Комплексные числа - это пара вещественных, записываемых в инженерной (а не математической) нотации: 21 + 12j.
Строки - просто последовательности символов. Строки бывают ASCII и Unicode, их можно перекодировать друг в друга. ASCII-строки можно также перекодировать в другую кодировку (например, koi8 <=> win1251)
Списки в качестве элементов могут содержать любые объекты. Списки неограниченной длины, и в них можно добавлять и удалять элементы, изменяя таким образом их длину. Списки в Питоне одномерные. Для эмуляции многомерных массивов можно использовать списки, элементами которых являются списки. Для эффективной обработки многомерных числовых матриц есть дополнительный модуль расширения Numerical Python.
Словари (ассоциативные массивы) - это отображения (mapping), сопоставляющие уникальному ключу произвольный объект. Ключом словаря может быть любой неизменяемый объект.
Изменяемые и неизменяемые объекты; адресная арифметика и ссылки
Объекты в Питоне бывают двух разновидностей - изменяемые и неизменяемые. Списки, например - объекты изменяемые, их содержимое и длину можно менять. Поскольку ключами словарей могут быть только неизменяемые объекты, в Питоне есть специальный тип неизменяемых списков - кортежи. Числа, естественно, объекты неизменяемые. Также неизменяемыми являются строки, в отличии от многих других языков программирования. Хотя классы, написанные программистами, порождают изменяемые объекты, у программиста есть возможность написать класс, экземпляры которого могут быть ключами словаря.