Послесловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Об авторе
Эрик Мэтиз (Eric Matthes), преподаватель физики и математики, живет на Аляске
и ведет курс Python начального уровня. Эрик пишет программы с пяти лет, а в на-
стоящее время занимается разработкой продуктов, которые исправляют недочеты
в системе образования и помогают использовать возможности программных про-
дуктов с открытым кодом в системе образования. В свободное время занимается
альпинизмом и проводит время с семьей.
О научном рецензенте
Кеннет Лав (Kenneth Love) — преподаватель и программист Python с многолетним
стажем. Он выступал с докладами и лекциями на конференциях, занимался про-
фессиональной подготовкой, работал внештатным программистом Python и Django,
а в настоящее время ведет занятия в компании дистанционного образования. Кен-
нет также является одним из создателей пакета
django-braces
, предоставляющего
удобные примеси (mixins) для представлений на базе классов Django. Желающие
могут читать его сообщения в Твиттере (
@kennethlove
).
Моему отцу, который никогда не жалел
времени, чтобы ответить на мои вопросы
по программированию, и Эверу, который
только начинает задавать мне свои
вопросы.
Благодарности
Эта книга никогда бы не появилась на свет без великолепных, чрезвычайно про-
фессиональных сотрудников издательства No Starch Press. Билл Поллок (Bill
Pollock) предложил мне написать вводный учебник, и я глубоко благодарен ему
за это. Тайлер Ортман (Tyler Ortman) помог привести в порядок мои идеи на ран-
ней стадии подготовки чернового варианта. Лиз Чедвик (Liz Chadwick) и Лесли
Шен (Leslie Shen) предоставили бесценные отзывы на исходные варианты каждой
главы, а Энн Мэри Уокер (Anne Marie Walker) помогла прояснить многие части
книги. Райли Хоффман (Riley Hoffman) отвечал на все вопросы, которые возникали
у меня в процессе построения полной книги, и терпеливо превращал мою работу
в прекрасный завершенный продукт.
Также хочу поблагодарить Кеннета Лава (Kenneth Love), научного рецензента
книги. Я познакомился с Кеннетом на конференции PyCon, и его энтузиазм в от-
ношении языка и сообщества Python с тех пор неизменно оставался для меня
источником профессионального вдохновения. Кеннет вышел за рамки простой
проверки фактов; он следил за тем, чтобы книга помогала начинающим програм-
мистам сформировать основательное понимание языка Python и программирова-
ния в целом. Вместе с тем ответственность за все оставшиеся неточности лежит
исключительно на мне.
Я хочу поблагодарить своего отца, который познакомил меня с программированием
в раннем возрасте и не побоялся, что я сломаю его оборудование. Также хочу ска-
зать спасибо своей жене Эрин за поддержку и помощь во время работы над книгой
и своему сыну Эверу, чья любознательность постоянно служит мне примером.
Введение
У каждого программиста найдется своя история о том, как он написал свою пер-
вую программу. Я начал изучать программирование еще в детстве, когда мой отец
работал на Digital Equipment Corporation, одну из ведущих компаний современной
эры вычислительной техники. Я написал свою первую программу на компьютере,
который был собран моим отцом из набора комплектующих в подвале дома. Ком-
пьютер представлял собой системную плату (без корпуса), подключенную к кла-
виатуре, а в качестве монитора использовалась простейшая электронно- лучевая
трубка. Моей первой программой стала игра по отгадыванию чисел, которая вы-
глядела примерно так:
Я загадал число! Попробуйте отгадать мое число: 25
Слишком мало! Следующая попытка: 50
Слишком много! Следующая попытка: 42
Верно! Хотите сыграть снова? (да/нет) нет
Спасибо за игру!
Никогда не забуду, как доволен я был, когда моя семья играла в написанную мной
игру и все работало точно так, как я задумал.
Мои ранние переживания имели далеко идущие последствия. Очень приятно по-
строить нечто, предназначенное для конкретной цели; нечто, успешно решающее
свою задачу. Программы, которые я пишу сейчас, намного серьезнее моих детских
попыток, но чувство удовлетворения, которое я ощущаю от вида работающей про-
граммы, остается практически тем же.
Для кого написана эта книга?
Цель этой книги — как можно быстрее ввести читателя в курс дела, чтобы тот
начал писать на Python работоспособные программы (игры, визуализации
данных и веб-приложения), и одновременно заложить основу в области про-
граммирования, которая пригодится ему на протяжении всей жизни. Книга
написана для людей любого возраста, которые прежде никогда не программи-
ровали на Python или вообще никогда не программировали. Если вы хотите
быстро изучить азы программирования, чтобы сосредоточиться на интересных
проектах, а также проверить свое понимание новых концепций на содержа-
тельных задачах — эта книга для вас. Книга также прекрасно подходит для
преподавателей, желающих предложить вводный курс программирования,
основанный на проектах.
14 Введение
Чему эта книга вас научит?
Цель книги — сделать вас хорошим программистом вообще и хорошим программи-
стом Python в частности. Процесс обучения будет эффективным, и вы приобретете
много полезных навыков, так как я представлю основательное введение в общие
концепции программирования. После того как вы перевернете последнюю стра-
ницу, вы будете готовы к знакомству с более серьезными возможностями Python,
а изучение вашего следующего языка программирования тоже упростится.
В первой части книги будут представлены базовые концепции программирования,
которые необходимо знать для написания программ Python. Эти концепции ничем
не отличаются от тех, которые рассматриваются в начале изучения почти любого
языка программирования. Вы познакомитесь с разными видами данных и возмож-
ностями хранения данных в списках и словарях. Вы научитесь создавать коллекции
данных и эффективно работать с этими коллекциями. В частности, циклы
while
и
if
позволяют выполнять определенные фрагменты кода, если некоторое условие
истинно, и выполнять другие фрагменты в противном случае — эти конструкции
очень сильно помогают при автоматизации процессов.
Вы научитесь получать входные данные от пользователя, чтобы ваши программы
стали интерактивными, и выполнять их до тех пор, пока пользователь остается ак-
тивным. Также вы узнаете, как написать функции для многократного выполнения
некоторых частей ваших программ, чтобы вы один раз программировали некоторое
действие, а потом могли использовать его столько раз, сколько потребуется. За-
тем эта концепция будет распространена на более сложное поведение с классами,
что позволит даже относительно простым программам реагировать на множество
разнообразных ситуаций. Вы научитесь писать программы, корректно обрабаты-
вающие многие типичные ошибки. После знакомства с базовыми концепциями
мы напишем несколько коротких программ для решения конкретных задач. На-
конец, вы сделаете первые шаги на пути к программированию среднего уровня: вы
научитесь писать тесты для своего кода, чтобы вы могли продолжать разработку
программ, не беспокоясь о возможном внесении ошибок. Вся информация части I
подготовит вас к более сложным и масштабным проектам.
В части II знания, полученные в части I, будут применены для построения трех про-
ектов. Вы можете взяться за любые из этих проектов в том порядке, который лучше
подходит для вас. В первом проекте (главы 12–14) будет создана игра-«стрелялка»
в стиле классического хита Space Invaders, состоящая из многих уровней с нараста-
ющей сложностью. После завершения этого проекта вы будете знать многое из того,
что необходимо знать для разработки собственных 2D-игр.
Второй проект (главы 15–17) познакомит вас с визуализацией данных. Чтобы
разобраться в огромных объемах доступной информации, специалисты по ана-
лизу данных применяют различные средства визуализации. Вы будете работать
с наборами данных, генерируемыми в программах; наборами данных, загружен-
ными из сетевых источников; и наборами данных, которые загружаются вашей
программой автоматически. После завершения этого проекта вы сможете писать
программы, обрабатывающие большие наборы данных и строящие визуальные
представления сохраненной информации.
Введение 15
В третьем проекте (главы 18–20) будет построено небольшое веб-приложение
Learning Log. Этот проект позволяет вести журнал новых идей и концепций, кото-
рые вы узнали в ходе изучения конкретной темы. Пользователь приложения смо-
жет вести разные журналы по разным темам, создавать учетные записи и начинать
новые журналы. Вы также узнаете, как развернуть свой проект в Интернете, чтобы
любой желающий мог работать с ним откуда угодно.
Почему именно Python?
Каждый год я задумываюсь над тем, продолжать ли мне работать на Python или же
перейти на другой язык — вероятно, более новый в мире программирования. И все
же я продолжаю работать на Python по многим причинам. Язык Python невероятно
эффективен: ваши программы делают больше, чем многие другие языки, в мень-
шем объеме кода. Синтаксис Python также позволяет писать «чистый» код. Ваш
код будет легко читаться, у вас будет меньше проблем с отладкой и расширением
программ по сравнению с другими языками.
Python используется для разных целей: для создания игр, построения веб-
приложений, решений бизнес-задач и разработки внутренних инструментов для
всевозможных интересных проектов. Python также широко применяется в научной
области для теоретических исследований и решения прикладных задач.
Впрочем, одной из самых важных причин для использования Python для меня
остается сообщество Python, состоящее из невероятно разных и благожелательных
людей. Сообщество играет исключительно важную роль в программировании, по-
тому что программирование не является сугубо индивидуальным делом. Многим
из нас, даже самым опытным программистам, приходится обращаться за советом
к коллегам, которые уже решали похожие задачи. Существование дружного, добро-
желательного сообщества помогает решать задачи, и сообщество Python готово
прийти на помощь людям, у которых Python является первым языком програм-
мирования.
Python — замечательный язык, давайте же браться за дело!
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу электронной почты
comp@piter .com
(издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства
http://www .piter .com
вы найдете подробную информацию
о наших книгах.
Ч а с т ь I
.
Основы
В части I этой книги представлены базовые концепции, необходимые для написания
программ на языке Python . Многие из этих концепций встречаются во всех языках про-
граммирования, поэтому они пригодятся вам на протяжении всей карьеры программиста .
В главе 1 вы установите Python на свой компьютер и запустите свою первую программу,
которая выводит на экран сообщение Hello world! . В главе 2 вы научитесь хранить ин-
формацию в переменных, работать с текстовыми и числовыми данными .
В главах 3 и 4 вы познакомитесь со списками . Списки позволяют хранить любой объем
информации в одной переменной, что повышает эффективность работы с данными . Вы
сможете работать с сотнями, тысячами и даже миллионами значений всего в нескольких
строках кода .
В главе 5 будут представлены команды if . С их помощью вы сможете написать код,
который делает что-то одно, если некоторое условие истинно, и что-то другое, если
условие не выполняется .
Глава 6 показывает, как использовать словари Python, связывающие разные виды ин-
формации . Словари, как и списки, могут содержать столько информации, сколько вы
захотите в них поместить .
В главе 7 вы научитесь получать данные от пользователей, чтобы ваши программы стали
интерактивными . Также в этой главе описаны циклы while, многократно выполняющие
блоки кода, пока некоторое условие остается истинным .
В главе 8 вы займетесь написанием функций — именованных блоков кода, которые ре-
шают конкретную задачу и запускаются тогда, когда потребуется .
В главе 9 представлены классы, предназначенные для моделирования реальных объ-
ектов: собак, кошек, людей, машин, ракет и т . д . С их помощью вы сможете представить
в своем коде любые сущности, реальные или абстрактные .
Глава 10 научит вас работать с файлами и обрабатывать ошибки, чтобы ваши программы
не завершались аварийно . Вы узнаете, как сохранить данные перед закрытием програм-
мы и снова загрузить их при запуске программы . В этой главе рассматриваются исклю-
чения Python; с их помощью вы сможете предвидеть возможные ошибки и организовать
их корректную обработку в программах .
В главе 11 вы научитесь писать тесты для кода . Тесты проверяют, что ваша программа
работает так, как предполагается . В результате вы сможете расширять свои программы,
не беспокоясь о возможном внесении новых ошибок . Тестирование — один из первых
навыков, отличающих новичка от программиста среднего уровня .
1
Начало работы
В этой главе вы запустите свою первую программу на языке Python,
hello_world .
py
. Сначала вы проверите, установлен ли Python на вашем компьютере, и если
нет — установите его. Также будет установлен текстовый редактор для подготовки
программ Python. Текстовые редакторы распознают код Python и выделяют син-
таксические конструкции во время работы, упрощая понимание структуры кода
разработчиком.
Подготовка среды программирования
Поддержка Python слегка отличается в разных операционных системах, поэтому
вы должны учитывать некоторые аспекты. В этой главе представлены две основные
версии Python, используемые в наше время, и описаны основные действия по на-
стройке Python в вашей системе.
Python 2 и Python 3
Сейчас доступны две версии Python: Python 2 и более новая версия Python 3. Каж-
дый язык программирования развивается с появлением новых идей и технологий,
и разработчики Python неустанно трудятся над тем, чтобы сделать язык более
мощным и гибким. Многие изменения имеют второстепенный характер и мало-
заметны на первый взгляд, но в отдельных случаях код, написанный на Python 2,
некорректно работает в системах с установленной поддержкой Python 3. В книге
я буду указывать на существенные различия между Python 2 и Python 3, так что вы
сможете следовать приведенным инструкциям независимо от используемой версии.
Если в вашей системе установлены обе версии или вы еще не установили Python,
используйте Python 3. Если в вашей системе установлена только версия Python 2
и вы предпочитаете с ходу взяться за написание кода, не желая возиться с установ-
кой, начните с Python 2. Но чем скорее вы перейдете на Python 3, тем лучше — все
же полезнее использовать самую новую версию.
Выполнение фрагментов кода Python
В поставку Python входит интерпретатор, который выполняется в терминальном
окне и позволяет опробовать фрагменты кода Python без сохранения и запуска
всей программы.
|