Ссылки на источник приветствуются, но не обязательны. В такие ссылки обычно включаются название книги, имя ее автора, название издательства и номер ISBN. Например: Introducing Python, автор Билл Любанович (Bill Lubanovic). Copyright 2015 Bill Lubanovic, 978-1-449-35936-2.
При любых сомнениях относительно превышения разрешенного объема использования примеров кода, приведенных в данной книге, можете свободно обращаться к нам по адресу permissions@oreilly.com.
Как с нами связаться
Пожалуйста, направляйте комментарии и вопросы, связанные с этой книгой, ее издателю:
O’Reilly Media, Inc.
1005, Gravenstein Highway North,
Sebastopol, CA 95472.
800-998-9938 (в Соединенных Штатах или Канаде).
707-829-0515 (международный или местный).
707-829-0104 (факс).
У нас есть веб-страница, посвященная этой книге, где мы размещаем опечатки, примеры и любую дополнительную информацию. Она располагается по адресу: http://bit.ly/introducing_python.
Чтобы оставить комментарий или задать технический вопрос об этой книге, отправляйте электронные письма по адресу bookquestions@oreilly.com.
Чтобы получить более подробную информацию о наших книгах, курсах, конференциях и новостях, посетите наш сайт http://www.oreilly.com.
Найдите нас на Facebook: http://facebook.com/oreilly.
Добавьте нас в свой Twitter: http://twitter.com/oreillymedia.
Смотрите нас на YouTube: http://www.youtube.com/oreillymedia.
Благодарности
Хочу объявить благодарность множеству людей, прочитавших и прокомментировавших мой черновик. В частности, я хотел бы упомянуть подробные обзоры Эли Бессерт (Eli Bessert), Генри Канивала (Henry Canival), Джереми Эллиота (Jeremy Elliott), Монте Миланука (Monte Milanuk), Лоика Пефферкорна (Loїc Pefferkorn) и Стивена Вейна (Steven Wayne).
Об авторе
Билл Любанович программировал в операционной системе Unix с 1977 года, разрабатывал GUI с 1981 года, базы данных с 1990 года, а веб-разработкой занимался с 1993 года.
В 1982 году, работая на стартапе Intran, он создал MetaForm — один из первых коммерчески успешных GUI (до Mac или Windows) для использования на одной из первых графических рабочих станций. В 1990 году он написал для компании Northwest Airlines визуальную систему управления доходами, которая дала миллионы долларов выручки. Кроме того, Любанович создал «витрину» компании в Интернете и написал для нее первый тест для анализа маркетинга в Сети. Позже, в 1994 году, он выступил сооснователем интернет-провайдера Tela, а в 1999 году участвовал в создании интернет-компании Mad Scheme.
Впоследствии Билл Любанович разрабатывал службы ядра и распределенные системы в составе команды, работающей на стартап с Манхэттена. В настоящее время автор этой книги занимается интеграцией сервисов OpenStack в суперкомпьютерной компании.
Билл счастливо живет в штате Миннесота со своей чудесной женой Мэри, сыном Томом и дочерью Карин, ухаживает за кошками Ингой и Люси и котом Честером.
Глава 1. Python: с чем его едят
Начнем с одной небольшой тайны и ее разгадки. Что, по-вашему, означают следующие две строки?
(Ряд 1): (RS) K18, ssk, k1, turn work.
(Ряд 2): (WS) Sl 1 pwise, p5, p2tog, p1, turn.
Выглядит как какая-то компьютерная программа. На самом деле это схема для вязания, а если точнее, фрагмент, который описывает, как связать пятку носка. Для меня эти строки имеют не больше смысла, чем кроссворд из газеты New York Times — для моего кота, но моя жена понимает их совершенно точно. Если вы вяжете, то тоже их поймете.
Рассмотрим еще один пример. Вы сразу поймете его предназначение, хотя и не сразу сможете определить результат:
½ столовой ложки масла или маргарина;
½ столовой ложки сливок;
2 ½ стакана муки;
1 чайная ложка соли;
1 чайная ложка сахара;
4 стакана картофельного пюре (охлажденного).
Перед тем как добавить муку, убедитесь, что все ингредиенты охлаждены.
Смешайте все ингредиенты.
Тщательно замесите.
Сделайте 20 шариков. Держите их охлажденными до следующего этапа.
Для каждого шарика разровняйте муку на тряпочке.
Раскатайте шарик при помощи рифленой скалки.
Жарьте на сковороде до подрумянивания.
Переверните и обжарьте другую сторону.
Даже если вы не готовите, вы сможете распознать кулинарный рецепт: список продуктов, за которым следуют указания по приготовлению. Но что получится в итоге? Это лефсе, норвежский деликатес, который напоминает тортилью. Полейте блюдо маслом, вареньем или чем-нибудь еще, сверните и наслаждайтесь.
Схема для вязания и рецепт имеют несколько похожих моментов:
• фиксированный словарь, состоящий из слов, аббревиатур и символов. Некоторые могут быть знакомы, другие же покрыты тайной;
• правила, описывающие, что и где можно говорить, — синтаксис;
• последовательность операций, которые должны быть выполнены по порядку;
• в некоторых случаях — повторение определенных операций (цикл), например способ приготовления каждого кусочка лефсе;
• в некоторых случаях — ссылка на другую последовательность операций (говоря компьютерными терминами, функция). Например, когда вы прочтете приведенный выше рецепт, вам может понадобиться рецепт приготовления картофельного пюре;
• предполагаемое знание контекста. Рецепт подразумевает, что вы знаете, что такое вода и как ее кипятить. Схема для вязания подразумевает, что вы умеете держать спицы в руках;
• ожидаемый результат. В наших примерах результатом будет предмет для ног и предмет для желудка. Главное — не перепутать.
Все эти идеи вы можете встретить и в компьютерных программах. Я воспользовался этими «непрограммами», чтобы показать, что программы не так страшны, как может показаться. Нужно всего лишь выучить верные слова и правила.
Теперь оставим этих дублеров и рассмотрим настоящую программу. Что она делает?
for countdown in 5, 4, 3, 2, 1, "hey!":
····print(countdown)
Если вы считаете, что это программа, написанная на языке программирования Python, которая выводит на экран следующее:
5
4
3
2
1
hey!
то вы знаете, что язык программирования Python выучить проще, чем понять рецепт или схему для вязания. К тому же вы можете тренироваться писать на языке программирования Python, сидя за удобным и безопасным столом, избегая опасностей вроде горячей воды и спиц.
Программа, написанная на языке программирования Python, содержит несколько специальных слов и символов: for, in, print, запятые, точки с запятой, скобки и т. д., — которые являются важной частью синтаксиса языка. Хорошая новость заключается в том, что язык программирования Python имеет более доступный и менее объемный синтаксис, чем большинство других языков программирования. Он кажется более понятным — почти как рецепт.
Вот еще одна небольшая программа, написанная на языке программирования Python, которая выбирает новостные клише из списка и выводит их на экран:
cliches = [
····"At the end of the day",
····"Having said that",
····"The fact of the matter is",
····"Be that as it may",
····"The bottom line is",
····"If you will",
····]
print(cliches[3])
Эта программа выведет четвертое клише:
Be that as it may
Списки — вроде cliches — представляют собой последовательность значений, доступ к которым осуществляется с использованием смещения от начала списка. Смещение для первого элемента списка равно 0, а для четвертого — 3.
Люди считают с единицы, поэтому может показаться странным считать с нуля. При программировании удобнее оперировать смещениями, чем позициями.
Списки широко распространены в языке программирования Python. О том, как ими пользоваться, будет рассказано в главе 3.
Далее приведена еще одна программа, которая также выводит цитату, но в этот раз цитата выбирается в зависимости от того, кто ее произнес, а не с помощью позиции в списке:
quotes = {
····"Moe": "A wise guy, huh?",
····"Larry": "Ow!",
····"Curly": "Nyuk nyuk!",
····}
stooge = "Curly"
print(stooge, "says: ", quotes[stooge])
Если вы запустите эту небольшую программу, она выведет следующее:
Curly says: Nyuk nyuk!
quotes — это словарь, коллекция уникальных ключей (в этом примере ключом является имя участника Stooge) и связанных с ними значений (в этом примере — значимая цитата участника Stooge). Используя словарь, вы можете сохранять элементы и выполнять их поиск по именам, что часто удобнее, чем работать со списком. Более подробно о словарях можно прочитать в главе 3.
В примере с клише для создания списка используются квадратные скобки ([и]), а в примере со Stooge для создания словаря — фигурные скобки ({ и }). Все это — варианты синтаксиса языка программирования Python, и в нескольких следующих главах вы увидите гораздо больше.