18 Введение библиотеку для разработки – readlinedevel в системах на базе Fedora или readlinedev в системах на базе Debian. (К сожалению, названия пакетов не всегда настолько очевидны.) После установки недостаю щих пакетов запустите команды ./configure и make еще раз. После успешной сборки можно попробовать запустить команду make test , чтобы убедиться, что все в порядке, хотя это не обязательно и к то му же может занять продолжительное время. Если вы использовали параметр –– prefix , то, чтобы выполнить локаль ную установку, просто запустите команду make install. Вероятно, бу дет желательно добавить символическую ссылку на выполняемый файл python (например, ln – s /local/python3/bin/python3.0 /bin/python3, если предполагать, что использовался параметр –– prefix=$HOME/local/ python3 и каталог $HOME/bin присутствует в переменной окружения PATH ). Возможно, также будет удобно добавить символическую ссылку на IDLE (например, ln – s /local/python3/bin/idle /bin/idle3, если ис ходить из тех же предположений, что и выше). Если вы не использовали параметр –– prefix и обладаете правами поль зователя root, зарегистрируйтесь в системе как root и выполните ко манду make install. В системах с настроенной программой sudo, таких как Ubuntu, выполните команду sudo make install. Если в системе был установлен Python 2, файл /usr/bin/python не изменится и Python 3 бу дет доступен как python3, точно также среда разработки IDLE для Py thon 3 будет доступна как idle3. Благодарности Мои первые слова благодарности я хотел бы принести техническим ре цензентам книги, начиная с Жасмин Бланшетт (Jasmin Blanchette), программиста, в соавторстве с которой я участвовал в создании двух книг о C++/Qt. Ее рекомендации о том, как расположить содержимое книги по главам, критические замечания по всем примерам и тща тельное чтение текста в значительной степени способствовали улучше нию книги. Джордж Брэндл (Georg Brandl) – ведущий разработчик Python и ответ ственный за создание документации к новому комплекту инструмен тов Python. Джордж обнаружил множество мелких ошибок и упорно, очень терпеливо объяснял их, пока все они не были поняты и устране ны. Он также внес множество усовершенствований в примеры. Фил Томпсон (Phil Thompson) – эксперт по языку Python и создатель PyQt, одной из лучших библиотек создания графического интерфейса для языка Python. Проницательность и отзывы Фила позволили про яснить и исправить множество неточностей. Трентон Шульц (Trenton Schulz) – старший инженерпрограммист подразделения Qt Software в компании Nokia (которое ранее было са Введение 19 мостоятельной компанией Trolltech), бывший ценным рецензентом всех моих предыдущих книг, вновь пришел мне на помощь. Внима тельное отношение Трентона и множество внесенных им предложений помогли выявить ряд неувязок и способствовали значительному улуч шению этой книги. В дополнение к вышеупомянутым рецензентам, каждый из которых прочитал книгу целиком, я хотел бы поблагодарить Дэвида Бодди (Da vid Boddie), старшего технического писателя подразделения Qt Soft ware в компании Nokia, опытного практика языка Python, который прочитал некоторые части книги и дал ценные рекомендации по ним. Спасибо также Гвидо ван Россуму (Guido van Rossum), создателю язы ка Python, а также обширному сообществу пользователей Python, при ложившим невероятные усилия, чтобы сделать язык Python и в осо бенности, его библиотеки такими полезными и удобными в использо вании. Как всегда, спасибо Джеффу Кингстону (Jeff Kingston), создателю языка верстки Lout, который я использую уже более десяти лет. Особое спасибо моему редактору Дебре Вильямс Коли (Debra Williams Cauley) за ее поддержку и за то, что максимально обеспечивала плав ность протекания всего процесса работы над книгой. Спасибо также Анне Попик (Anna Popick), которая так здорово справлялась с управ лением производственным процессом, и корректору Одри Дойл (Aud rey Doyle), прекрасно выполнившему свою работу. И напоследок, но не в последнюю очередь, я хочу поблагодарить мою супругу Андреа (Andrea) за то, что терпела мои пробуждения в 4 часа утра, когда часто появлялись новые идеи и вспоминались неточности в программном коде, требующие немедленной проверки и исправле ния, а также за ее любовь, верность и поддержку.
1Быстрое введениев процедурное программированиеВ этой главе приводится объем информации, достаточный, чтобы на чать писать программы на языке Python. Мы настоятельно рекоменду ем установить Python, если вы еще не сделали этого, чтобы иметь воз можность получить практический опыт для закрепления изучаемого материала. (Во введении описывается, как получить и установить Py thon во всех основных платформах, подробности на стр. 17.) Первый раздел этой главы показывает, как создавать и запускать про граммы на языке Python. Для написания программного кода вы може те использовать любой простой текстовый редактор по своему усмотре нию, при этом среда разработки IDLE, обсуждаемая в этом разделе, предоставляет не только редактор программного кода, но и дополни тельные функциональные возможности, включая средства отладки и проведения экспериментов с программным кодом Python. Во втором разделе будут представлены восемь составляющих языка Python, знания которых вполне достаточно для создания программ, имеющих практическую ценность. Все эти составляющие будут рас смотрены глубже в последующих главах и по мере продвижения впе ред будут дополняться остальными особенностями языка Python, что бы к концу книги весь язык оказался полностью охваченным, а вы были в состоянии использовать в своих программах все, что он пред лагает. В заключительной части главы представлены две короткие програм мы, в которых используется подмножество особенностей языка Python, введенных во втором разделе, благодаря чему вы сможете получить представление о программировании на языке Python. •Создание и запуск программ на языке Python •«Золотой запас» Python 22Глава 1. Быстрое введение в процедурное программирование Создание и запуск программ на языке PythonПрограммный код на языке Python можно записать с по мощью любого простого текстового редактора, который способен загружать и сохранять текст либо в кодировке ASCII, либо UTF8. По умолчанию предполагается, что файлы с программным кодом на языке Python сохраня ются в кодировке UTF8, надмножестве кодировкиASCII, с помощью которой можно представить практи чески любой символ любого национального алфавита. Файлы с программным кодом на языке Python обычно имеют расширение .py, хотя в некоторых UNIXподоб ных системах (таких как Linux и Mac OS X) некоторые приложения на языке Python не имеют расширения, а программы на языке Python с графическим интерфей сом, в частности в Windows и Mac OS X, обычно имеют расширение .pyw. В этой книге все время будет использо ваться расширение .py для обозначения консольных про грамм и модулей Python и расширение .pyw – для про грамм с графическим интерфейсом. Все примеры, пред ставленные в книге, не требуют изменений для запуска в любой из платформ, поддерживаемых Python 3. Ради того чтобы удостовериться, что установка выполнена корректно, и чтобы продемонстрировать классический первый пример, создадим файл с именем hello.py в простом текстовом редакторе (в Windows для этих целей вполне подойдет «Блокнот» (Notepad), а кроме того вскоре будет рассказано о более удобном редакторе) со следующим содер жимым: #!/usr/bin/env python3 print("Hello", "World!") Первая строка – это комментарий. В языке Python комментарии начи наются с символа # и продолжаются до конца строки. (Через минуту мы объясним назначение этого странного комментария.) Вторая стро ка – пустая. Python игнорирует пустые строки, но их бывает резонно вставлять, разбивая протяженные блоки программного кода на более мелкие части, более удобные для восприятия. Третья строка – это про граммный код на языке Python. В данном случае вызывается функция print() , которой передается два аргумента, оба – типа str (string, или строка, то есть последовательность символов). Все инструкции, которые встретятся в файле с расширением .py, вы полняются последовательно, строка за строкой, начиная с первой строки. В этом заключается отличие от других языков программиро вания, таких как C++ или Java, в которых имеются функции или ме тоды со специальными именами, которые запускаются в первую оче Кодировки символов, стр. 112 Создание и запуск программ на языке Python 23 редь. Порядок выполнения инструкций может быть изменен, в чем можно будет убедиться при обсуждении управляющих структур язы ка Python в следующем разделе. Будем считать, что пользователи Windows сохраняют файлы с про граммным кодом Python в каталоге C:\py3eg, а пользователи UNIX (то есть UNIX, Linux и Mac OS X) – в каталоге $HOME/py3eg. Сохраните файл hello.py в каталоге py3eg и закройте текстовый редактор. Теперь, когда у нас имеется программа, ее можно запустить. Програм мы на языке Python выполняются интерпретатором Python, и, как правило, делается это в окне консоли. В операционной системе Win dows консоль может называться « Командная строка» (Console), или «DOS Prompt», или «MS DOS Prompt» или иметь похожее название, и обычно доступна в меню « Пуск →Все программы→Стандартные» (Start→All Programs→ Accessories). В Mac OS X консоль представлена программой Terminal.app (по умолчанию находится в меню Applications/Utilities), которую можно отыскать с помощью инструмента Finder. В других UNIXподобных системах можно использовать программу xterm или консоль, предос тавляемую используемым оконным окружением, например, konsole или gnometerminal. Запустите консоль и в операционной системе Windows введите сле дующие команды (предполагается, что Python был установлен в ката лог по умолчанию) – вывод консоли показан жирным шрифтом, а вводимые вами команды – обычным моноширинным: C:\>cd c:\py3eg C:\py3eg\>C:\Python30\python.exe hello.py Поскольку в команде cd (change directory – изменить каталог) указан абсолютный путь, не имеет значения, в каком каталоге вы находились перед этим. Пользователи UNIX должны ввести следующие команды (предполага ется, что путь к Python 3 включен в переменную окружения PATH): 1 $ cd $HOME/py3eg $ python3 hello.py В обоих случаях вывод программы должен быть одним и тем же: Hello World! Обратите внимание: если не указано иное, Python ведет себя в Mac OS X точно так же, как и в других системах UNIX. В действительности под общим термином «UNIX» мы подразумеваем Linux, BSD, Mac OS X и большинство других версий UNIX и UNIXподобных систем. 1 Внешний вид строки приглашения к вводу в системах UNIX может отли чаться от $, как показано здесь, но для нас это не имеет никакого значения.
24 Глава 1. Быстрое введение в процедурное программирование Несмотря на то, что в данной программе имеется всего одна выполняемая инструкция, запуская ее, мы можем сделать некоторые выводы о функции print(). С одной стороны, функция print() является встроенной частью языка Python – чтобы воспользоваться ею нам не при шлось «импортировать» или «подключать» какиелибо библиотеки. Кроме того, при выводе она отделяет аргу менты одним пробелом, а после вывода последнего аргу мента выполняет переход на новую строку. Это поведе ние по умолчанию, которое можно изменить, в чем вы убедитесь позднее. Другое ценное замечание о функции print() заключается в том, что она может принимать столько аргументов, сколько потребуется. Ввод последовательности команд для выполнения программ на языке Python может быстро надоесть. К счастью, и в Windows, и в UNIX су ществуют более удобные способы. Предположим, что мы уже нахо димся в каталоге py3eg, тогда в Windows достаточно будет ввести ко манду: C:\py3eg\>hello.py Windows использует свой реестр соответствия программ расширениям файлов и при вводе имен файлов с расширением .py автоматически вы зывает интерпретатор Python. Если в консоли будет выведено: ('Hello', 'World!') то это означает, что в системе установлен Python 2, который вызывает ся вместо Python 3. Один из вариантов следующих действий – пере ключить ассоциацию расширения .py с Python 2 на Python 3. Другое решение (менее удобное, но более безопасное) – включить каталог с Python 3 в путь поиска (предполагается, что он был установлен в ка талог по умолчанию) и всякий раз явно вызывать его: C:\py3eg\>path=c:\python30;%path% C:\py3eg\>python hello.py Возможно, было бы удобнее создать единственный пакетный файл py3.bat с единственной строкой path=c:\python30;%path% и сохранить его в каталоге C:\Windows. После этого при запуске консоли для выполне ния программ Python 3 достаточно будет выполнять команду py3.bat. При желании можно настроить автоматический запуск файла py3.bat. Для этого следует изменить свойства консоли: отыщите консоль в ме ню Пуск (Start), щелкните на ярлыке правой кнопкой мыши и выберите в контекстном меню пункт Свойства (Properties), затем во вкладке Ярлык ( Shortcut) в конец строки в поле Объект (Target) добавьте « /u /k c:\win dows\py3.bat » (обратите внимание на пробелы перед, между и после Функция print() , стр. 212
Создание и запуск программ на языке Python 25 параметров «/u» и «/k» и убедитесь, что указанная строка добавлена после «cmd.exe»). В UNIX сначала файл следует сделать выполняемым, после чего его можно будет запускать, просто введя его имя: $ chmod +x hello.py $ ./hello.py Конечно, команду chmod придется запускать всего один раз, после этого достаточно будет просто вводить имя программы ./hello.py, чтобы за пустить ее. Когда в UNIX программа запускается в консоли, она читает первые два байта. 1 Если это последовательность ASCIIсимволов #!, команд ная оболочка предполагает, что файл должен выполняться интерпре татором, а первая строка файла определяет, какой интерпретатор дол жен использоваться. Данная строка называется строкой shebang (вы полняется командной оболочкой) и всегда должна быть первой стро кой в файле. Строка shebang обычно записывается в одной из двух форм: #!/usr/bin/python3 или: #!/usr/bin/env python3 В первом случае она определяет используемый интерпретатор. Вторая форма может потребоваться для программ на языке Python, запускае мых вебсервером, хотя абсолютный путь в каждом конкретном слу чае может отличаться от того, что показан здесь. Во втором случае бу дет использован первый интерпретатор python3, найденный в теку щем окружении. Вторая форма является более универсальной, потому что допускает, что интерпретатор Python 3 может находиться не в ка талоге /usr/bin (то есть он может находиться, например, в каталоге /usr/local/bin или может быть установлен в каталоге $HOME). Строка shebang не требуется (хотя и не мешает) в операционной системе Win dows; все примеры в этой книге имеют строку shebang во второй ее форме, хотя она может быть и не приведена. Обратите внимание: когда мы говорим о системах UNIX, предполага ется, что выполняемый файл Python 3 (или символическая ссылка на него) находится в пути поиска PATH и имеет имя python3. Если это не так, вам потребуется изменять строки shebang в примерах, подставив туда корректное имя файла (или корректное имя и путь, если вы пред 1 Взаимодействие между пользователем и консолью обслуживается програм мой «командной оболочки». Нас не интересуют различия, существующие между консолью и командной оболочкой, поэтому эти термины мы будем считать взаимозаменяемыми.
26Глава 1. Быстрое введение в процедурное программирование почтете использовать первую форму), или создать символическую ссылку с именем python3 на выполняемый файл Python 3, поместив ее в один из каталогов, находящийся в пути поиска PATH. Многие мощные текстовые редакторы, такие как Vim и Emacs, обладают встроенной поддержкой редактирова ния программ на языке Python. Обычно эта поддержка выражается в предоставлении подсветки синтаксиса и в корректном оформлении отступов в строках. В каче стве альтернативы можно использовать IDLE – среду программирования на языке Python. В Windows и Mac OS X IDLE устанавливается по умолчанию, а в UNIX час то предоставляется в виде отдельного пакета, как уже говорилось во введении. Как показано на снимке с экрана, что приводится на рис. 1.1, среда IDLE имеет весьма непритязательный внешний вид, напоминающий времена Motif в UNIX и Windows 95. Это обусловлено тем, что для соз дания графического интерфейса среды используется библиотека Tkin ter (описывается в главе 13), а не одна из современных и мощных биб лиотек, таких как PyGtk, PyQt или wxPython. Причины выбора Tkin ter корнями уходят в прошлое и в значительной степени обусловлены либеральностью лицензии и тем фактом, что библиотека Tkinter на много меньше других библиотек создания графического интерфейса. Положительная сторона этого выбора – IDLE входит в стандартную поставку Python и очень проста в изучении и использовании. Получение и установка Python, стр. 17 Рис. 1.1. Командная оболочка Python в IDLE «Золотой запас» Python 27Среда IDLE обеспечивает три ключевые возможности: ввод выраже ний и программного кода на языке Python с получением результатов прямо в командной оболочке Python; предоставляет редактор про граммного кода с подсветкой синтаксиса языка Python и поддержкой функции оформления отступов и отладчик, который может использо ваться в режиме пошагового выполнения программного кода, облег чая поиск и устранение ошибок. Командная оболочка Python особенно удобна при опробовании простых алгоритмов, фрагментов программ ного кода и регулярных выражений и может использоваться как очень мощный и гибкий калькулятор. Для языка Python существуют и другие среды разработки, но мы реко мендуем использовать IDLE – по крайней мере на начальном этапе. При желании для создания программ вы можете использовать простой текстовый редактор, а отладку выполнять посредством инструкций print() Интерпретатор Python можно запускать самостоятельно, не указывая ему программу на языке Python. В этом случае интерпретатор запус кается в интерактивном режиме. В этом режиме можно вводить инст рукции языка Python и получать те же результаты, что и в командной оболочке Python среды IDLE, при этом будет выводиться все та же строка приглашения к вводу >>>. Но пользоваться IDLE гораздо про ще, поэтому мы рекомендуем применять ее для проведения экспери ментов с фрагментами программного кода. Короткие интерактивные примеры, которые приводятся в книге, могут вводиться как в интер претаторе Python, работающем в интерактивном режиме, так и в ко мандной оболочке Python, в среде IDLE. Теперь мы знаем, как создавать и запускать программы на языке Py thon, но совершенно очевидно, что мы далеко не уедем, зная всего одну функцию. В следующем разделе мы существенно расширим наши по знания о языке Python. Они позволят нам писать пусть и короткие, но уже полезные программы на языке Python, как те, что приводятся в последнем разделе. |