Мэтиз. Изучаем Python. Crash course2 n d e d i t i o na h a n d s o n, p r o j e c t b a s e d i n t r o d u c t i o n t o p r o g r a m m i n g
Скачать 6.2 Mb.
|
Приложение Б . Текстовые редакторы . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Настройка Sublime Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Другие текстовые редакторы и IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Приложение В . Помощь и поддержка . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Первые шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Поиск в интернете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 IRC (Internet Relay Chat) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Discord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Приложение Г . Git и контроль версий . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Установка Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Создание проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Игнорирование файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Инициализация репозитория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Проверка статуса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Добавление файлов в репозиторий . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Закрепление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Просмотр журнала . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Второе закрепление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Отмена изменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Извлечение предыдущих закреплений . . . . . . . . . . . . . . . . . . . . . . . . . 508 Удаление репозитория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Отзывы о книге Интересно наблюдать за тем, как No Starch Press создает будущую классику, кото- рая по праву может занять место рядом с более традиционными книгами по про- граммированию. Эта книга — одна из них. Грег Лейден (Greg Laden), ScienceBlogs Автор рассматривает довольно сложные проекты и излагает материал в последова- тельной, логичной и приятной манере, которая привлекает читателя к теме. Full Circle Magazine Хорошая подача материала с доступными объяснениями фрагментов кода. Книга ведет читателя вперед шаг за шагом, строя все более сложный код и объясняя все происходящее на этом пути. FlickThrough Reviews Изучение Python с этой книгой оставило в высшей степени положительные впе- чатления! Отличный вариант, если вы только начинаете изучать Python. Mikke Goes Coding Об авторе Эрик Мэтиз, преподаватель физики и математики, живет на Аляске и ведет курс Python начального уровня. Эрик пишет программы с пяти лет, а в настоящее время занимается разработкой продуктов, которые исправляют недочеты в системе об- разования и помогают использовать возможности программных продуктов с от- крытым кодом в системе образования. В свободное время занимается альпинизмом и проводит время с семьей. О научном редакторе Кеннет Лав — преподаватель и программист Python с многолетним стажем. Он вы- ступал с докладами и лекциями на конференциях, занимался профессиональной подготовкой, работал внештатным программистом Python и Django, а в настоящее время работает программистом в O’Reilly Media. Кеннет является одним из соз- дателей пакета django-braces , предоставляющего удобные примеси (mixins) для представлений на базе классов Django. Желающие могут читать его сообщения в Твиттере ( @kennethlove ). Моему отцу, который никогда не жалел времени, чтобы ответить на мои вопросы по программированию, и Эверу, который только начинает задавать мне свои вопросы Предисловие к третьему изданию Предыдущее издание «Изучаем Python: программирование игр, визуализация дан- ных, веб-приложения» получило множество положительных отзывов. Тираж книги составил более 500 тысяч экземпляров, включая переводы на 8 языков. Я получал письма и сообщения как от читателей, которым было всего десять лет, так и от пен- сионеров, желающих освоить программирование для собственного удовольствия. Материал книги используется для обучения в школах и колледжах. Студенты, которым приходится иметь дело с более сложными учебниками, используют мою книгу как дополнительный источник для своих занятий; по их мнению, книга яв- ляется хорошим подспорьем в учебе. Разные люди используют ее для повышения своей квалификации и для работы над параллельными проектами. Короче говоря, книга используется для самых разнообразных целей — как я и надеялся. Я был очень рад тому, что мне представилась возможность поработать над следую- щим изданием. Python — достаточно зрелый язык, но он продолжает развиваться, как и все языки. При переработке материала книги я старался сделать его более до- ступным и компактным. Необходимости в изучении Python 2 больше нет, поэтому новое издание полностью сосредоточено на Python 3. Установка многих пакетов Python упростилась, поэтому упростились и инструкции по установке и настройке. Я добавил несколько тем, которые, на мой взгляд, будут полезны читателям, обновил некоторые разделы и представил новые, более простые средства для решения неко- торых задач в языке Python. Также были доработаны разделы, в которых некоторые аспекты языка были представлены недостаточно точно. Все проекты были полностью обновлены; в них используются только популярные библиотеки с качественным сопровождением, которыми вы можете пользоваться при построении собственных проектов. Ниже приведена краткая сводка изменений в третьем издании: В главе 1 инструкции по установке Python были упрощены для пользовате- лей всех основных операционных систем. Теперь я рекомендую использовать текстовый редактор Sublime Text, который популярен как среди новичков, так и среди профессионалов и работает во всех операционных системах. В главе 2 приведено более подробное описание того, как переменные реа- лизованы в языке Python. Переменные описываются как текстовые мет- ки для значений, что позволяет читателю лучше понять поведение пере- 14 Предисловие к третьему изданию менных в Python. В книге широко используются f-строки, появившиеся в Python 3.6, — намного более простой и удобный механизм использования значений в строках. В Python 3.6 также появилась возможность использова- ния символов подчеркивания для представления больших чисел (например, 1_000_000 ); она также включена в это издание. Множественное присваивание переменных было представлено в одном из проектов первого издания; описа- ние было обобщено и перемещено в главу 2 для удобства читателей. Наконец, в эту главу также включена понятная система соглашений для представления констант в Python. В главе 6 представлен метод get() для чтения значений из словаря, который может вернуть значение по умолчанию в случае отсутствия ключа. Проект «Инопланетное вторжение» (главы 12–14) теперь полностью базируется на использовании классов. Сама игра представляет собой класс (вместо серии функций, как в предыдущем издании). Это сильно упрощает общую структуру игры, уменьшает число вызовов функций и необходимых параметров. Читатели, знакомые с первым изданием, оценят простоту нового подхода, основанного на классах. Pygame теперь может устанавливаться однострочной командой во всех системах, а читатель может выбрать между запуском игры в полноэкранном или оконном режиме. В проектах визуализации данных инструкции по установке Matplotlib упро- стились для всех операционных систем. Визуализации, базирующиеся на Matplotlib, используют функцию subplots() , более удобную для обучения по- строению сложных визуализаций. В проекте Rolling Dice из главы 15 использу- ется Plotly — библиотека визуализации с простым синтаксисом, качественным сопровождением и красивым выводом результатов с широкими возможностями настройки. В главе 16 метеорологический проект переведен на данные NOAA, которые продемонстрировали большую стабильность за прошедшие годы, чем сайт, ис- пользованный в первом издании. Картографический проект теперь посвящен глобальной сейсмической активности; к моменту завершения проекта будет построена великолепная визуализация, наглядно изображающая границы тектонических плит по координатам всех землетрясений за заданный период времени. Вы научитесь наносить на карту любые наборы данных, содержащие географические координаты. В главе 17 для визуализации активности, связанной с Python, в проектах с от- крытым кодом на GitHub используется библиотека Plotly. Проект Learning Log (главы 18–20) построен на базе новейшей версии Django, а для его оформления используется новейшая версия Bootstrap. Процесс раз- вертывания проекта в Heroku был упрощен за счет использования пакета django-heroku , и в нем используются переменные среды вместо редактирования файлов settings .py . Такое решение получается более простым и лучше соответ- Предисловие к третьему изданию 15 ствует тому, как профессиональные программисты развертывают современные проекты Django. Приложение А было полностью переработано. В него были включены реко- мендации по установке Python. В приложение Б включены подробные реко- мендации по настройке Sublime Text и приведены краткие описания основных текстовых редакторов и интегрированных сред, используемых в наши дни. В приложении В приведены ссылки на более новые и популярные сетевые ре- сурсы для получения помощи, а приложение Г предлагает небольшой учебный курс по применению Git для контроля версий. Спасибо за то, что читаете эту книгу! Если у вас появятся вопросы или вы захотите поделиться своим мнением, не стесняйтесь и пишите. Благодарности Эта книга никогда бы не появилась на свет без великолепных, чрезвычайно про- фессиональных сотрудников издательства No Starch Press. Билл Поллок (Bill Pollock) предложил мне написать вводный учебник, и я глубоко благодарен ему за это предложение. Тайлер Ортман (Tyler Ortman) помог привести в порядок мои идеи на ранней стадии подготовки чернового варианта. Лиз Чедвик (Liz Chadwick) и Лесли Шен (Leslie Shen) предоставили бесценные отзывы на исходные варианты каждой главы, а Энн Мэри Уокер (Anne Marie Walker) помогла прояснить многие части книги. Райли Хоффман (Riley Hoffman) отвечал на все вопросы, которые возникали у меня в процессе создания книги, и терпеливо превращал мою работу в прекрасный завершенный продукт. Также хочу поблагодарить Кеннета Лава, научного редактора книги. Я познако- мился с Кеннетом на конференции PyCon, и его энтузиазм в отношении языка и сообщества Python с тех пор неизменно оставался для меня источником профес- сионального вдохновения. Кеннет вышел за рамки простой проверки фактов; он следил за тем, чтобы книга помогала начинающим программистам сформировать основательное понимание языка Python и программирования в целом. Вместе с тем ответственность за все оставшиеся неточности лежит исключительно на мне. Я хочу поблагодарить своего отца, который познакомил меня с программированием в раннем возрасте и не побоялся, что я сломаю его оборудование. Также хочу ска- зать спасибо своей жене Эрин за поддержку и помощь во время работы над книгой и своему сыну Эверу, чья любознательность постоянно служит мне примером. Введение У каждого программиста найдется своя история о том, как он написал свою первую программу. Я начал изучать программирование еще в детстве, когда мой отец рабо- тал на Digital Equipment Corporation, одну из ведущих компаний современной эры вычислительной техники. Я написал свою первую программу на компьютере, ко- торый был собран моим отцом из набора компонентов в подвале дома. Компьютер представлял собой системную плату (без корпуса), подключенную к клавиатуре, а в качестве монитора использовалась простейшая электронно-лучевая трубка. Моей первой программой стала игра по отгадыванию чисел, которая выглядела примерно так: Я загадал число! Попробуйте отгадать мое число: 25 Слишком мало! Следующая попытка: 50 Слишком много! Следующая попытка: 42 Верно! Хотите сыграть снова? (да/нет) нет Спасибо за игру! Никогда не забуду, как это было здорово — моя семья играла в написанную мной игру, и все работало точно так, как я задумал. Мои ранние переживания имели далекоидущие последствия. Очень приятно по- строить нечто, предназначенное для конкретной цели; нечто, успешно решающее свою задачу. Программы, которые я пишу сейчас, намного серьезнее моих детских попыток, но чувство удовлетворения, которое я ощущаю от вида работающей про- граммы, остается практически тем же. Для кого написана эта книга? Цель этой книги — как можно быстрее ввести читателя в курс дела, чтобы он начал писать на Python работоспособные программы (игры, визуализации данных и веб- приложения), и одновременно заложить основу в области программирования, кото- рая пригодится ему на протяжении всей жизни. Книга написана для людей любого возраста, которые прежде никогда не программировали на Python или вообще ни- когда не программировали. Если вы хотите быстро изучить азы программирования, чтобы сосредоточиться на интересных проектах, а также проверить свое понимание новых концепций на содержательных задачах, — эта книга для вас. Книга также 18 Введение прекрасно подходит для преподавателей, желающих предложить вводный курс программирования, основанный на проектах. Наконец, если вы студент, которому хочется иметь более доступное введение в Python, чем предложенный ему учебник, эта книга также упростит ваши учебу. Чему эта книга вас научит? Цель книги — сделать вас хорошим программистом вообще и хорошим про- граммистом Python в частности. Процесс обучения будет эффективным, и вы приобретете много полезных привычек, так как я представлю основательное введение в общие концепции программирования. После того как вы перевернете последнюю страницу, вы будете готовы к знакомству с более серьезными воз- можностями Python, а изучение вашего следующего языка программирования тоже упростится. В части I книги будут представлены базовые концепции программирования, ко- торые необходимо знать для написания программ Python. Эти концепции ничем не отличаются от тех, которые рассматриваются в начале изучения почти любого языка программирования. Вы познакомитесь с разными видами данных и возмож- ностями хранения данных в списках и словарях. Вы научитесь создавать коллекции данных и эффективно работать с этими коллекциями. В частности, циклы while и if позволяют выполнять определенные фрагменты кода, если некоторое условие истинно, и выполнять другие фрагменты в противном случае — эти конструкции очень сильно помогают при автоматизации процессов. Вы научитесь получать входные данные от пользователя, чтобы ваши программы стали интерактивными, и выполнять их до тех пор, пока пользователь остается ак- тивным. Также вы узнаете, как написать функции для многократного выполнения некоторых частей ваших программ, чтобы вы один раз программировали некоторое действие, а потом могли использовать его столько раз, сколько потребуется. За- тем эта концепция будет распространена на более сложное поведение с классами, что позволит даже относительно простым программам реагировать на множество разнообразных ситуаций. Вы научитесь писать программы, корректно обрабаты- вающие многие типичные ошибки. После знакомства с базовыми концепциями мы напишем несколько коротких программ для решения конкретных задач. Наконец, вы сделаете первые шаги на пути к программированию среднего уровня: вы на- учитесь писать тесты для своего кода, чтобы продолжать разработку программ, не беспокоясь о возможном внесении ошибок. Вся информация части I подготовит вас к более сложным и масштабным проектам. В части II знания, полученные в части I, будут применены для построения трех про- ектов. Вы можете взяться за любые из этих проектов в том порядке, который лучше подходит для вас. В первом проекте (главы 12–14) будет создана игра-стрелялка в стиле классического хита Space Invaders, состоящая из многих уровней с нарас- тающей сложностью. После завершения этого проекта вы будете знать многое из того, что необходимо знать для разработки собственных 2D-игр. Почему именно Python? 19 Второй проект (главы 15–17) познакомит вас с визуализацией данных. Чтобы разобраться в огромных объемах доступной информации, специалисты по анализу данных применяют различные средства визуализации. Вы будете работать с набо- рами данных, генерируемыми в программах; наборами данных, загруженными из сетевых источников; и наборами данных, которые загружаются вашей программой автоматически. После завершения этого проекта вы сможете писать программы, обрабатывающие большие наборы данных и строящие визуальные представления сохраненной информации. В третьем проекте (главы 18–20) будет построено небольшое веб-приложение Learning Log. Этот проект позволяет вести журнал новых идей и концепций, кото- рые вы узнали в ходе изучения конкретной темы. Пользователь приложения смо- жет вести разные журналы по разным темам, создавать учетные записи и начинать новые журналы. Вы также узнаете, как развернуть свой проект в интернете, чтобы любой желающий мог работать с ним откуда угодно. Онлайн-ресурсы Все информационные ресурсы, прилагаемые к книге, доступны в интернете по адресу https://nostarch .com/pythoncrashcourse2e/ или http://ehmatthes .github .io/pcc_2e/ : Инструкции по настройке. Они совпадают с инструкциями, приведенными в книге, но в них включены активные ссылки, относящиеся к различным фазам настройки. Если у вас возникнут какие-либо проблемы с подготовкой и на- стройкой, обращайтесь к этому ресурсу. |