Питон для Си-программистов в вопросах и ответах

Свойства языка Питон

Автор: Александр Бельченко
Дата: 5 мая 2006
Версия: 1.1

Что такое Python

Если дать развернутую характеристику, то Питон — это:

  • интерпретируемый язык
  • язык очень высокого уровня с компактным и выразительным синтаксисом
  • язык со строгой динамической типизацией
  • объектно-ориентированный язык, однако при этом не требующий повсеместного использования объектной парадигмы; он также позволяет писать программы в процедурном и функциональном стилях
  • кроссплатформенный, свободно распространяемый
  • с обширной стандартной библиотекой
  • расширяемый и встраиваемый

Интерпретируемый язык

Программы на языке Питон не компилируются в стандартном понимании в бинарный код для целевой платформы (как это происходит с программами на Си). Вместо этого программы автоматически транслируются в байт-код, который исполняется интерпретатором Питона. Как вы понимаете скорость выполнения скомпилированных программ выше чем интерпретируемых.

Язык очень высокого уровня

Язык очень высокого уровня подразумевает, что в Питоне имеются более высокоуровневые конструкции языка (по сравнению с тем же Си/С++). В частности Питон обладает набором встроенных типов данных высокого уровня, в число которых входят:

  • числовые типы (целые, вещественные, комплексные, десятичные-дробные)
  • строки простые и unicode
  • булевые значения и специальные значения None и ... (ничто и нечто)
  • последовательности: изменяемые списки и неизменяемые кортежи
  • коллекции элементов: списки и множества (sets)
  • словари (хэш-массивы)

Как и данные, объектами первого класса являются функции, классы, модули. Питон имеет встроенный механизм интроспекции, механизм исключений. Частичная поддержка функционального программирования поддерживает использование лямбда-функций. Языком очень высокого уровня его делает также встроенный сборщик мусора.

Язык с компактным и выразительным синтаксисом

Отличительной особенностью Питона является его синтаксис: блоки кода выделяются только отступами, без использования специальных ключевых слов (типа begin...end или специальных скобок { } как в Си). Вкупе с отсутствием неоходимости завершать каждый оператор на отдельной строке символом точки с запятой, отсутствием лишних круглых скобок для выражений if, for, while, получаем отличительный синтаксис Питона.

Такой синтаксис изначально задумывался для того, чтобы программы на языке Питон получались компактными и наглядными. Если учесть высокоуровневые типы данных и обширную стандартную библиотеку, динамическую типизацию, то текст типичной программы на Питоне будет в разы меньше аналогичной по функциональности программе на том же Си.

Язык со строгой динамической типизацией

Питон — это динамический язык. В нем отсутствует предварительное объявление типа переменной. Более того, одна и та же переменая может менять свой тип в результате присваивания ей значения другого типа. При этом Питон является языком со строгой типизацией, т.е. каждая переменная принадлежит к одному конкретному типу, и тип переменной можно узнать во время выполнения.

Если взглянуть глубже на переменные Питона, то окажется, что все значения переменных, а также функции, классы, модули — это суть объекты Питона, автоматически создаваемые в результате выполнения программы, а также автоматически удаляемые из памяти сборщиком мусора после того, как эти объекты более не нужны. Сами же переменные, имена используемые в программе, являются связкой между строковыми именами и объектами в памяти. Т.е. для удобства можно упрощенно считать, что все переменные в программе — это лишь ссылки на соответствующие объекты. Присваивание переменной нового значения — это изменение ссылки на новый объект.

Объектно-ориентированный язык

Питон оперирует объектами. Всё в питоне суть объекты. В основе Питона лежит объектно-ориентированная парадигма, но она спрятана достаточно глубоко и не выпячивается без надобности. При желании можно ни разу не задумываться об объектной природе Питона и писать полностью процедурные программы.

Кроссплатформеный, свободно распространяемый

Кросплатформенность обеспечивается за счет унифицированного набора методов и библиотек для доступа к сервисам операционной системы. Поскольку сама программа на Питоне не компилируется в нативный бинарный код для конкретного процессора и конкретной операционной системы, то она (в идеале) является полностью переносимой. В реальности для обеспечения абсолютной кроссплатформенности необходимо применять дополнительные усилия и знать особенности разных платформ, на которых планируется работа приложения. Но всё равно, и в этом случае переносимость достигается за счет средств самого Питона.

Питон является свободно распространяемым языком. Его интерпретатор, как и исходные коды, вы можете свободно скачать с сайта Python. Поддерживаются разные операционные системы, в том числе есть версии Питон для КПК.

Язык с обширной стандартной библиотекой

Стандартная библиотека предоставляет программисту набор функций и методов для решения самых разнообразных задач. В стандартную библиотеку входят сервисы времени исполнения Питона, в том числе функции для доступа к сервисам самой операционной системы (обощенные и специфические для конкретной ОС), файловой подсистемы и проч., различные библиотеки для работы со строками, в том числе и библиотека регулярных выражений, коллекция разнообразных функций для математичсеких вычислений, поддержка unit-тестов, библиотека для логирования выполнения программы, отладочные модули, библиотека для построения командных интерпретаторов, многочисленные библиотеки для реализации интернет-сервисов, криптографические функции, мультимедийные операции.

Кроме столь обширной стандартной библиотеки различными авторами создаются допонительные библиотеки для других нужд, перечень которых еще более обширен.

Расширяемый и встраиваемый язык

Расширяемость — свойство языка, позволяющее использовать в программах на Питоне модули, написанные на Си/С++. Специальное Python/C API определяет интерфейс, который необходимо реализовать для взаимодействия питон-программ с вашим си-кодом.

Встраиваемость — свойство языка, позволяющее программам на Си/С++ выполнять программы на языке Питон. Специальное Python/C API определяет интерфейс, который необходимо реализовать для вызова и исполнения питон-программ из вашего си-кода.

В основе модулей расширения и встраивания питона внутрь вашего приложения лежит единый набор Python/C API, разница лишь в том, кто является главным в связке Питон-Си (и временами эта разница слабо уловима).