Язык программирования Python
Лекция #1: Введение в программирование на языке Python.
В этой лекции пойдет речь о синтаксисе языка Python для основных алгоритмических конструкций, литералов, выражений. Будет приведено описание встроенных типов данных, а также сделана попытка рассмотреть некоторые вопросы общепринятого в Python стиля программирования.
О Python (лучше произносить «питон», хотя некоторые говорят «пайтон») — предмете данного изучения, лучше всего говорит создатель этого языка программирования, голландец Гвидо ван Россум:
«Python — интерпретируемый, объектно–ориентированный высокоуровневый язык программирования с динамической семантикой. Встроенные высокоуровневые структуры данных в сочетании с динамическими типизацией и связыванием делают язык привлекательным для быстрой разработки приложений (RAD, Rapid Application Development). Кроме того, его можно использовать в качестве сценарного языка для связи программных компонентов. Синтаксис Python прост в изучении, в нем придается особое значение читаемости кода, а это сокращает затраты на сопровождение программных продуктов. Python поддерживает модули и пакеты, поощряя модульность и повторное использование кода. Интерпретатор Python и большая стандартная библиотека доступны бесплатно в виде исходных и исполняемых кодов для всех основных платформ и могут свободно распространяться.»
В процессе изучения будет раскрыт смысл этого определения, а сейчас достаточно знать, что Python — это универсальный язык программирования. Он имеет свои преимущества и недостатки, а также сферы применения. В поставку Python входит обширная стандартная библиотека для решения широкого круга задач. В Интернете доступны качественные библиотеки для Python по различным предметным областям: средства обработки текстов и технологии Интернет, обработка изображений, инструменты для создания приложений, механизмы доступа к базам данных, пакеты для научных вычислений, библиотеки построения графического интерфейса и т.п. Кроме того, Python имеет достаточно простые средства для интеграции с языками C, C++ (и Java) как путем встраивания (embedding) интерпретатора в программы на этих языках, так и наоборот, посредством использования библиотек, написанных на этих языках, в Python–программах. Язык Python поддерживает несколько парадигм программирования: императивное (процедурный, структурный, модульный подходы), объектно–ориентированное и функциональное программирование.
Можно считать, что Python — это целая технология для создания программных продуктов (и их прототипов). Она доступна почти на всех современных платформах (как 32–битных, так и на 64–битных) с компилятором C и на платформе Java.
Может показаться, что, в программной индустрии нет места для чего–то другого кроме C/C++, Java, Visual Basic, C#. Однако это не так. Возможно, благодаря данному курсу лекций и практических занятий у Python появятся новые приверженцы, для которых он станет незаменимым инструментом.
В этой лекции не ставится цели систематически описать Python: для этого существует оригинальное справочное руководство. Здесь предлагается рассмотреть язык одновременно в нескольких аспектах, что достигается набором примеров, которые позволят быстрее приобщиться к реальному программированию, чем в случае строгого академического подхода.
Однако стоит обратить внимание на правильный подход к описанию языка. Создание программы — это всегда коммуникация, в которой программист передает компьютеру информацию, необходимую для выполнения последним действий. То, как эти действия понимает программист (то есть «смысл»), можно назвать семантикой. Средством передачи этого смысла является синтаксис языка программирования. Ну а то, что делает интерпретатор на основании переданного, обычно называют прагматикой. При написании программы очень важно, чтобы в этой цепочке не возникало сбоев.
Синтаксис — полностью формализованная часть: его можно описать на формальном языке синтаксических диаграмм (что и делается в справочных руководствах). Выражением прагматики является сам интерпретатор языка. Именно он читает записанное в соответствии с синтаксисом «послание» и превращает его в действия по заложенному в нем алгоритму. Неформальным компонентом остается только семантика. Именно в переводе смысла в формальное описание и кроется самая большая сложность программирования. Синтаксис языка Python обладает мощными средствами, которые помогают приблизить понимание проблемы программистом к ее «пониманию» интерпретатором. О внутреннем устройстве Python будет говориться в одной из завершающих лекций.
Создание Python было начато Гвидо ван Россумом (Guido van Rossum) в 1991 году, когда он работал над распределенной ОС Амеба. Ему требовался расширяемый язык, который бы обеспечил поддержку системных вызовов. За основу были взяты ABC и Модула–3. В качестве названия он выбрал Python в честь комедийных серий BBC «Летающий цирк Монти–Питона», а вовсе не по названию змеи. С тех пор Python развивался при поддержке тех организаций, в которых Гвидо работал. Особенно активно язык совершенствуется в настоящее время, когда над ним работает не только команда создателей, но и целое сообщество программистов со всего мира. И все–таки последнее слово о направлении развития языка остается за Гвидо ван Россумом.
Программа на языке Python может состоять из одного или нескольких модулей. Каждый модуль представляет собой текстовый файл в кодировке, совместимой с 7–битной кодировкой ASCII. Для кодировок, использующих старший бит, необходимо явно указывать название кодировки. Например, модуль, комментарии или строковые литералы которого записаны в кодировке KOI8–R, должен иметь в первой или второй строке следующую спецификацию:
# -*- coding: koi8–r -*-
Благодаря этой спецификации интерпретатор Python будет знать, как корректно переводить символы литералов Unicode–строк в Unicode. Без этой строки новые версии Python будут выдавать предупреждение на каждый модуль, в котором встречаются коды с установленным восьмым битом.
О том, как делать программу модульной, станет известно в следующих лекциях. В примерах ниже используются как фрагменты модулей, записанных в файл, так и фрагменты диалога с интерпретатором Python. Последние отличаются характерным приглашением >>>. Символ решетка (#) отмечает комментарий до конца строки.
Программа на Python, с точки зрения интерпретатора, состоит из логических строк. Одна логическая строка, как правило, располагается в одной физической, но длинные логические строки можно явно (с помощью обратной косой черты) или неявно (внутри скобок) разбить на несколько физических:
print a, " — очень длинная строка, которая не помещается в",
80, "знакоместах"
Примечание:
Во всех примерах в основном используется «официальный» стиль оформления кода на Python в соответствии с документом «Python Style Guide», который можно найти на сайте http://python.org
Основные алгоритмические конструкции
Предполагается, что слушатели уже умеют программировать хотя бы на уровне школьной программы, и потому вполне достаточно провести параллели между алгоритмическими конструкциями и синтаксисом Python. Кроме того, Python как правило не подводит интуицию программиста (по крайней мере, науке хорошо известны типичные ловушки начинающих программистов на Python), поэтому изучать синтаксис Python предпочтительнее на примерах, а не с помощью синтаксических диаграмм или форм Бэкуса–Наура.
Последовательность операторов
Последовательные действия описываются последовательными строками программы. Стоит, правда, добавить, что в программах важны отступы, поэтому все операторы, входящие в последовательность действий, должны иметь один и тот же отступ:
a = 1
b = 2
a = a + b
b = a - b
a = a - b
print a, b
Что делает этот пример? Проверить свою догадку можно с помощью интерактивного режима интерпретатора Python.
При работе с Python в интерактивном режиме как бы вводится одна большая программа, состоящая из последовательных действий. В примере выше использованы операторы присваивания и оператор print.
Оператор условия и выбора
Разумеется, одними только последовательными действиями в программировании не обойтись, поэтому при написании алгоритмов используется еще и ветвление:
if a > b:
c = a