Знакомство с Python
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Знакомство с Python

 

Дэн Бейдер, Дэвид Эймос, Джоанна Яблонски, Флетчер Хейслер
Знакомство с Python
2022

Переводчики Е. Матвеев, Е. Матвеев


 

Дэн Бейдер, Дэвид Эймос, Джоанна Яблонски, Флетчер Хейслер

Знакомство с Python . — СПб.: Питер, 2022.

 

ISBN 978-5-4461-1924-0

© ООО Издательство "Питер", 2022

 

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

 

Что питонисты говорят о книге «Знакомство с Python»

«Обожаю [эту книгу]! Книга написана доступным языком, материал понятен, а последовательность изложения выглядит логично. Я никогда не терялся в материале, а интенсивность изложения не слишком велика, что позволяет мне снова и снова возвращаться к предыдущим главам.

Я просмотрел более 10 разных учебников/книг/сетевых курсов о Python. Пожалуй, больше всего я узнал именно из материалов Real Python1

Thomas Wong (Томас Вон)

«Прошло три года, а я все еще возвращаюсь к книгам Real Python, когда требуется быстро освежить в памяти важные команды языка Python».

Роб Фаулер (Rob Fowler)

«Я долгое время заставлял себя заняться самообучением. Я продирался через десятки неполных сетевых учебников. Я засыпал при просмотре многочасовых скучных видеороликов. Я разочаровался в бесчисленных заумных книгах от именитых издателей. А потом я открыл для себя Real Python.

Доступные пошаговые инструкции разделяют большие темы на легко усваиваемые части, написанные простым языком. Авторы никогда не забывают о своих читателях, их объяснения неизменно обстоятельны и подробны. Сейчас я уже перешел к самостоятельной работе, но постоянно возвращаюсь к книге за наставлениями».

Джаред Нильсен (Jared Nielsen)

«Мне нравится эта книга, потому что каждый урок завершают реальные и интересные задачи. Я только что написал программу для подсчета сбережений, которая учитывает состояние моего сберегательного счета, — класс!»

Дрю Прескотт (Drew Prescott)

«Чтобы потренироваться в том, что я узнал, я начал строить простые сценарии, упрощающие повседневную работу моей команды. Когда руководство заметило это, мне предложили новую должность разработчика. Я знаю, что мне еще многое предстоит узнать и проблем будет немало, но я наконец-то начал заниматься тем, что мне действительно нравится.

Еще раз: ОГРОМНОЕ СПАСИБО!»

Камил (Kamil)

«В курсах Real Python мне больше всего нравится то, что они объясняют все на максимально простом уровне.

Для освоения многих учебных курсов — притом практически в любой дисциплине — необходимо изучать массу специальных терминов, тогда как на самом деле материал можно объяснить быстро и лаконично. Авторы Real Python стараются использовать интересные примеры, и у них это отлично получается».

Стивен Грэди (Stephen Grady)

«После освоения первого курса Real Python я написал программу для автоматизации моих повседневных операций на работе. То, на что раньше требовалось от трех до пяти часов, теперь выполняется менее чем за 10 минут!»

Брэндон Янгдейл (Brandon Youngdale)

«Честно говоря, осваивая материал книги, я усердно искал, что бы можно было в ней добавить или улучшить, но учебник получился просто замечательный! Вы прекрасно умеете объяснять и обучать Python на уровне, доступном даже для людей вроде меня, то есть полных новичков.

Последовательность изложения материала работает идеально. Упражнения очень сильно помогают, и после освоения материала книги вы справедливо ощущаете гордость. Мне кажется, у вас есть особый дар — делать так, чтобы Python казался более досягаемым для людей, не принадлежащих к миру программирования.

Я никогда не думал, что буду иметь дело с Python или изучать его. Но теперь с небольшой поддержкой с вашей стороны я изучаю его — и вижу, что в будущем мне это принесет только пользу!»

Ши Клусевич (Shea Klusewicz)

«Авторы курсов НЕ забыли о том, каково быть новичком (а об этом не помнят многие авторы!). Они ничего не требуют от своих читателей, и поэтому их книги так хорошо читаются. К курсам прилагаются превосходные видеоролики, а также множество ссылок для дополнительного обучения и домашней работы и примеры кода, с которыми вы можете экспериментировать.

Мне очень понравилось, что все уроки сопровождались полными примерами кода и каждая строка прокомментирована, чтобы вы понимали, что происходит.

У меня много книг о Python, но только книги Real Python я прочитал от корки до корки: просто они однозначно лучшие на рынке. Если вы, как и я, не принадлежите к числу профессиональных программистов (я работаю в сетевом маркетинге), эти книги станут для вас настоящим наставником благодаря доступным объяснениям, освобожденным от всего лишнего! В высшей степени рекомендую!»

Крейг Эддиман (Craig Addyman)

Об авторах

Ресурс Real Python предназначен для всех, кто хочет освоить навыки реального программирования при поддержке сообщества профессиональных разработчиков Python со всего мира.

Веб-сайт realpython.com был запущен в 2012 году. В настоящее время он ежемесячно помогает более чем трем миллионам разработчиков Python своими бесплатными учебными пособиями и курсами.

Все, кто работал над книгой «Знакомство с Python», — практики, имеющие многолетний профессиональный опыт в программировании, члены преподавательской команды Real Python.

 

Дэвид Эймос — технический директор по контенту сайта Real Python. После ухода из образовательной системы в 2015 году Дэвид работал на различных технических должностях как программист и специалист по обработке данных. В 2019 году он перешел в штат Real Python, чтобы развить свое увлечение образованием. Дэвид возглавил переработку и обновление материала книги для Python 3.

Дэн Бейдер — владелец и старший редактор сайта Real Python, а также ведущий разработчик образовательной платформы realpython.com. Дэн занимается программированием более 20 лет, он имеет степень магистра в области компьютерных технологий. А кроме того, Дэн написал «Python Tricks»2 — популярную книгу для продвинутых разработчиков Python.

Джоанна Яблонски — главный редактор сайта Real Python. Она любит естественные языки в той же степени, что и языки программирования. Ее пристрастие к загадкам, закономерностям и нудным мелочам привело к тому, что она выбрала карьеру переводчика. Прошло совсем немного времени, и она влюбилась в новый язык — Python! Джоанна присоединилась к проекту Real Python в 2018 году и с тех пор помогает программистам Python повышать профессиональную квалификацию.

Флетчер Хейслер — основатель проекта Hunter2, он обучает разработчиков тонкостям программирования и построению безопасных современных веб-приложений. Флетчер, один из основателей Real Python, в 2012 году написал первую версию учебного курса Python, на котором основана эта книга.

1 Real Python — проект Дэна Бейдера, одного из авторов книги «Знакомство с Python» и автора бестселлера «Чистый Python. Тонкости программирования для профи». Подробнее об этом ресурсе — в разделе «Об авторах». — Примеч. ред.

2Бейдер Д. Чистый Python. Тонкости программирования для профи. — СПб.: Питер.

Я просмотрел более 10 разных учебников/книг/сетевых курсов о Python. Пожалуй, больше всего я узнал именно из материалов Real Python1

Real Python — проект Дэна Бейдера, одного из авторов книги «Знакомство с Python» и автора бестселлера «Чистый Python. Тонкости программирования для профи». Подробнее об этом ресурсе — в разделе «Об авторах». — Примеч. ред.

Бейдер Д. Чистый Python. Тонкости программирования для профи. — СПб.: Питер.

Дэн Бейдер — владелец и старший редактор сайта Real Python, а также ведущий разработчик образовательной платформы realpython.com. Дэн занимается программированием более 20 лет, он имеет степень магистра в области компьютерных технологий. А кроме того, Дэн написал «Python Tricks»2 — популярную книгу для продвинутых разработчиков Python.

Предисловие

Добро пожаловать! Надеюсь, вы готовы узнать, почему Python привлекает столь многих разработчиков — как профессионалов, так и любителей — и как вы можете применять его в ваших проектах, мелких и крупных.

Эта книга написана для новичков, которые либо немного владеют навыками программирования, но не языком и экосистемой Python, либо начинают осваивать язык с нуля без какого-либо предварительного опыта программирования.

Если у вас нет диплома в области компьютерных технологий, не огорчайтесь. Дэвид, Дэн, Джоанна и Флетчер разъяснят вам основные концепции программирования в процессе изложения основ Python; и что не менее важно — на первых порах не будут отвлекаться на несущественные подробности.

Python как язык полного спектра

При изучении нового языка программирования у вас еще нет опыта для того, чтобы судить, насколько хорошо он послужит вам в долгосрочной перспективе. Если вы намерены изучать Python, позвольте заверить, что вы сделали хороший выбор. Одна из важнейших причин заключается в том, что Python является языком полного спектра.

Что мы имеем в виду? Некоторые языки очень хорошо подходят для новичков. Они ведут их за руку, и программирование становится невероятно простым. Этот подход доводится до крайности в таких визуальных языках, как Scratch.

В Scratch вы имеете дело с блоками, представляющими концепции программирования: переменные, циклы, вызовы методов и т.д. Эти блоки перетаскиваются на визуальной поверхности. Возможно, Scratch хорошо подходит для написания первых, очень простых программ, но профессиональное приложение на нем не построишь. Назовите хотя бы одну компанию из списка Fortune 500, которая реализует свою основную бизнес-логику на Scratch.

Не получилось? У меня тоже, потому что это было бы полным безумием.

Другие языки обладают невероятной мощью — но в руках опытных разработчиков. Пожалуй, самым популярным в этой категории является C++ и его ближайший родственник C. Любой веб-браузер, которым вы пользовались сегодня, с большой вероятностью был написан на C или C++. Операционная система, в которой этот браузер работает, тоже, скорее всего, написана на C/C++. Ваша любимая стрелялка или стратегическая видеоигра? Верно: C/C++.

На этих языках можно делать невероятные вещи, но они совершенно недружелюбны к новичкам, которые предпочитают спокойное знакомство с новой областью.

Вы еще не видели код C++? Иногда от него начинают слезиться глаза. Приведу пример (относительно сложный):

template <typename T>

_Defer<void(*(PID<T>, void (T::*)(void)))

    (const PID<T>&, void (T::*)(void))>

defer(const PID<T>& pid, void (T::*method)(void))

{

  void (*dispatch)(const PID<T>&, void (T::*)(void)) =

    &process::template dispatch<T>;

  return std::tr1::bind(dispatch, pid, method);

}

Пожалуйста, только не это…

И Scratch, и C++ определенно не являются тем, что я называю языками полного спектра. Scratch упрощает начало программирования, но для построения реальных приложений придется переключиться на «настоящий» язык. И, наоборот, на C++ можно строить реальные приложения, но на деликатное введение в тему лучше не рассчитывать. Вы с головой погружаетесь во всю сложность языка, который создавался для поддержки полнофункциональных приложений.

С другой стороны, Python отличается от обеих крайностей — это язык полного спектра. Мы часто судим о простоте языка по программе Hello,World. Иначе говоря, какой синтаксис и действия необходимы, чтобы программа вывела сообщение Hello, World? На языке Python трудно представить что-то проще:

print("Hello, World")

И все! Тем не менее вряд ли это можно назвать полноценным критерием.

Тест Hello,World полезен, но его недостаточно для того, чтобы продемонстрировать всю мощь или сложность языка. Рассмотрим другой пример. Не старайтесь понять все от начала до конца — просто следите за процессом, чтобы уловить суть. Все эти (и многие другие) концепции будут рассмотрены в книге. Следующий пример будет вам вполне по силам, когда вы доберетесь до конца книги.

Итак, новый критерий: насколько трудно написать программу, которая обращается к внешнему веб-сайту, загружает контент в память вашего приложения, а затем выводит часть этого контента для пользователя? Для этого эксперимента мы воспользуемся Python 3 с пакетом requests (который вам необходимо установить — см. главу 12):

import requests

resp = requests.get("http://olympus.realpython.org")

html = resp.text

print(html[86:132])

Вы не поверите, но это все! При запуске программа выводит результат следующего вида:

<h2>Please log in to access Mount Olympus:</h2>

Это простая, дружелюбная к начинающим часть спектра возможностей Python. Всего несколько тривиальных строк раскрывают невероятную мощь. Поскольку для Python доступно много мощных, но удобных библиотек (таких, как requests), часто говорят, что «батарейки входят в комплект Python».

Итак, вы увидели простой, но мощный пример. В реальном мире многие замечательные приложения были написаны на Python.

На Python написан YouTube, самый популярный сайт потокового видео, обрабатывающий более миллиона запросов в секунду. Instagram — еще один пример приложения на Python. Примеры можно найти и ближе — realpython.com и мои сайты, такие как talkpython.fm.

Тот факт, что Python является языком полного спектра, означает, что вы можете начать с основ и осваивать расширенные возможности по мере роста потребностей вашего приложения.

Популярность Python

Вы наверняка слышали, что Python популярен. Может показаться, что по­пулярность языка менее важна, чем то, что на нем можно построить нужное вам приложение.

Как бы то ни было, популярность языка программирования многое говорит о качестве доступных библиотек и о количестве опубликованных вакансий. Короче говоря, лучше придерживаться более популярных технологий, потому что в вашем распоряжении окажется больше вариантов применения полученных навыков.

Действительно ли Python настолько популярен? Да, настолько. Без шумихи и преувеличений дело не обходится, но обширная статистика подкрепляет это утверждение. Взгляните на аналитику, представленную на stackoverflow.com — известном сайте вопросов и ответов для программистов.

Stack Overflow поддерживает сайт StackOverflowTrends, на котором можно искать информацию о трендах различных технологий. Если сравнить Python с другими возможными кандидатами для изучения программирования, вы увидите, что Python выделяется на их фоне.

 

Если вы захотите изучить эти тренды, воспользуйтесь данными insights.stackoverflow.com/trends.

Обратите внимание на невероятный рост применения Python по сравнению с графиками других кандидатов — горизонтальными и даже снижающимися! Если ваше будущее зависит от успеха конкретной технологии, то какой язык вы бы выбрали из этого списка?

Впрочем, это всего лишь один график — что он говорит нам? Рассмотрим другой. Stack Overflow проводит среди разработчиков ежегодный опрос, очень исчерпывающий и очень хорошо продуманный. Полные результаты за 2020 год можно найти на insights.stackoverflow.com/survey/2020.

В этом описании обратите внимание на раздел «Самые любимые языки» («Most Wanted»). В нем приведены данные о доле «разработчиков, которые не используют язык или технологию, но выразили интерес к разработке на этом языке».

И снова из диаграммы видно, что Python стоит на первом месте со значительным отрывом даже от второго места.

 

Если вы согласны с тем, что относительная популярность языка программирования важна, то Python, очевидно, является хорошим вариантом.

Вам не надо знать теорию

Еще одно обстоятельство, которое я хочу подчеркнуть в начале вашего путешествия в мир Python: вам не обязательно быть специалистом по информатике. Если вы к этому стремитесь — прекрасно. Изучение Python станет большим шагом в этом направлении. Однако приглашение к изучению программирования часто преподносится в виде: «У нас столько свободных вакансий! Нам нужны разработчики!»

Это может быть правдой, а может и не быть. Но что гораздо важнее, программирование (даже простейшие навыки) может стать вашей персональной суперсилой.

Представьте, что вы — биолог. Стоит ли бросать биологию и поступать на должность программиста, специализирующегося на построении веб-интерфейсов? Возможно, нет. Но навыки вроде того, который был показан в начале предисловия (с использованием requests для получения данных с веб-сайта), могут оказаться невероятно полезными и для биолога.

Вам не придется вручную экспортировать и извлекать данные с веб-сайтов или из электронных таблиц, вы просто используете Python для обработки тысяч источников данных или электронных таблиц за время, необходимое для ручной обработки всего одного источника. Владение языком Python переформатирует вашу повседневную работу в качестве биолога, выведет ее на другой уровень — значительно выше уровня ваших коллег, так что она станет вашей суперсилой.

Дэн и Real Python

Позвольте мне напоследок сказать пару слов об авторах. Дэн Бейдер и другие авторы изо дня в день трудятся над тем, чтобы доступно и ярко объяснять концепции Python на сайте realpython.com.

Они обладают неповторимыми взглядами на экосистему Python и ориентируются на то, что должны знать начинающие программисты.

Я со спокойной душой доверяю вас им в путешествии по миру Python. Отправляйтесь в путь и изучайте этот замечательный язык по отличной книге. А самое главное — получайте удовольствие от процесса!

Майкл Кеннеди, основатель Talk Python (@mkennedy)

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

 

Глава 1. Введение

Добро пожаловать! Встречайте новое издание книги «Знакомство с Python», полностью обновленное для Python 3.9. Книга посвящена методам программирования на языке Python, которые мы иллюстрируем интересными практическими примерами. Кем бы вы ни были — начинающим программистом или профессио­налом, желающим освоить новый язык, — здесь вы найдете все необходимое для того, чтобы начать самостоятельную работу на Python.

Если ваша деятельность связана с компьютером, то, каковы бы ни были ваши цели, вы откроете для себя огромное количество возможностей упростить свою жизнь за счет автоматизации задач и решения проблем в написанных вами программах Python. Достаточно изучить материал этой книги.

Но чем же так хорош Python как язык программирования? Прежде всего он свободно распространяется с открытым кодом, а это означает, что вы можете бесплатно загрузить его и использовать для любых целей (в том числе коммерческих).

Кроме того, приверженцы Python создали сообщество и разработали целый ряд полезных инструментов, которыми вы можете пользоваться в своих программах. Понадобилось поработать с документами PDF? Для этого вам предлагается многогранный инструментарий. Извлечь данные с веб-страниц? Вам не придется начинать с нуля!

Python создавался с таким расчетом, чтобы им было проще пользоваться, чем любым другим языком программирования. Как правило, код на Python намного легче читается и намного быстрее пишется, чем на других языках.

Вот простейшая программа на C, другом популярном языке программирования:

#include <stdio.h>

 

int main(void)

{

    printf("Hello, World\n");

}

Эта программа просто выводит текст Hello, World на экран. Многовато работы для вывода одной фразы! А вот как выглядит та же программа, написанная на Python:

print("Hello, World")

Совсем просто, верно? Теперь вы сами убедились, что код на Python быстрее пишется и проще читается. И еще он выглядит более дружественным и доступным.

В то же время Python обладает всей функциональностью других языков — и не только. Вы не поверите, сколько профессиональных продуктов построено на базе Python: Instagram, YouTube, Reddit, Spotify… список можно продолжать.

Python не только доступен и интересен для изучения. Этот язык также положен в основу технологий некоторых компаний мирового уровня, что открывает фантастические возможности карьерного роста для любого программиста, который им хорошо владеет.

1.1. Почему именно эта книга?

Будем откровенны: в интернете с лихвой хватает информации о Python. Но многим новичкам, которые изучают язык самостоятельно, иногда трудно разобраться, что изучать и в какой последовательности.

Возможно, вас интересует вопрос: что следует в первую очередь узнать о Python, чтобы заложить надежную базу для дальнейшего обучения? В таком случае эта книга для вас независимо от того, абсолютный ли вы новичок или у вас уже есть опыт работы на Python или других языках.

Книга написана просто. Базовые концепции, которые вам необходимы, излагаются доступно. Это означает, что вы быстро начнете добиваться успехов в Python.

Вместо перечисления возможностей языка я рассказываю, как разные структурные элементы сочетаются друг с другом и что необходимо для построения реальных приложений и сценариев на языке Python.

Шаг за шагом вы освоите фундаментальные концепции, которые помогут вам сделать первые шаги в применении Python.

Многие книги по программированию грешат описанием всех возможных вариаций каждой команды, из-за чего читатели быстро теряются в лабиринте подробностей. Такой подход отлично годится для справочников, но не для изучения языка программирования. Мало того, что вы тратите большую часть времени, пытаясь уложить в голове множество деталей, которые вам никогда не понадобятся, — это попросту скучно!

Книга построена по принципу 80/20: большую часть нужной информации можно усвоить, изучив несколько критически важных концепций. Мы рассмотрим команды и приемы, используемые в большинстве ситуаций, и сосредоточимся на решении реальных повседневных задач.

Тем самым я гарантирую, что вы:

быстро освоите полезные приемы программирования;

• потратите меньше времени на борьбу с лишними сложностями;

• начнете применять Python на практике;

получите больше удовольствия от процесса.

Книга дает вам возможность получить базовые знания, и дальнейшие ваши вылазки на более сложную территорию будут проходить намного проще.

За основу мы взяли материал первой части исходного курса «Real Python Course», выпущенного в 2012 году. За прошедшие годы этот курс опробовали тысячи программистов на Python, экспертов по работе с данными и разработчиков, трудящихся в компаниях разных уровней, включая Amazon, Red Hat и Microsoft.

Для этой книги мы тщательно доработали, расширили и обновили материал, чтобы вы могли быстро и эффективно развивать свои навыки работы на Python.

1.2. О Real Python

Сайт Real Python даст вам возможность освоить навыки реального программирования в сообществе профессиональных питонистов.

Веб-сайт realpython.com был запущен в 2012 году. В настоящее время он ежемесячно помогает более чем трем миллионам разработчиков на Python, предоставляя доступ к книгам, учебникам и другим учебным ресурсам.

Все, кто работал над этой книгой, — практикующие программисты из команды Real Python с многолетним профессиональным опытом.

Контактные данные Real Python в интернете:

realpython.com

• @realpython в Twitter (https://twitter.com/realpython)

• The Real Python Newsletter (https://twitter.com/newsletter)

• The Real Python Podcast (https://twitter.com/podcast)

1.3. Как пользоваться книгой

Первая половина книги — краткий, но разносторонний обзор всех фундаментальных возможностей Python. Никакой предшествующий опыт программирования вам для этого не понадобится. Вторая половина — практические решения интересных реальных задач программирования.

Новичкам мы рекомендуем изучить первую половину книги от начала до конца. Темы во второй половине книги в меньшей степени связаны друг с другом, так что вам будет проще осваивать их по отдельности, однако имейте в виду: чем дальше, тем материал сложнее.

Если у вас уже есть опыт программирования, возможно, вам стоит с ходу обратиться ко второй части книги. Но все же подумайте над тем, чтобы сначала разобраться в основах, а потом уж заполнять информационные пробелы в процессе решения практических задач.

Большинство разделов каждой главы завершается упражнениями, которые помогут вам убедиться в том, что вы хорошо усвоили учебный материал. Также в книге предлагаются сложные задачи, для решения которых вам придется воспользоваться знаниями, полученными из предыдущих глав.

В файлах, прилагаемых к книге, содержатся полные решения задач и самых сложных упражнений. Но чтобы извлечь максимум пользы, постарайтесь решать задачи самостоятельно, а не с ходу заглядывать в ответы.

Если у вас вообще нет опыта программирования, первые главы желательно подкрепить дополнительной практикой. Мы рекомендуем проработать учебники начального уровня, которые можно бесплатно загрузить с сайта realpython.com (https://realpython.com/python-basics), — они помогут убедиться в том, что материал вы усвоили.

А если у вас появятся вопросы или вы захотите поделиться своим мнением, то всегда можете обратиться к нам напрямую (https://realpython.com/contact).

Обучение на практике

Принцип обучения на практике взят за основу в этой книге, поэтому обязательно вводите вручную все фрагменты кода, которые вам встретятся. Для достижения наилучших результатов мы рекомендуем избегать копирования/вставки примеров. Вы быстрее поймете концепции и усвоите синтаксис, если будете вводить каждую строку самостоятельно. Кроме того, если вы совершите ошибку — что абсолютно нормально и что частенько случается с любым разработчиком, — то даже простое исправление опечаток поможет вам научиться отлаживать код.

Пробуйте выполнять упражнения и задачи самостоятельно, прежде чем обращаться за помощью к внешним ресурсам. При достаточной практике вы усвоите материал, а попутно хорошо проведете время!

Сколько времени потребуется для изучения материала книги?

Если вы уже знакомы с любым другим языком программирования, вам достаточно каких-нибудь 35–40 часов. Если же у вас нет опыта программирования, вам может потребоваться 100 часов и более.

Не торопитесь, вас никто не подгоняет. Программирование — занятие благодарное, но непростое. Удачи на вашем пути в мир Python! Мы за вас болеем!

1.4. Дополнительный материал и учебные ресурсы

К книге прилагаются бесплатные дополнительные ресурсы и материалы, которые можно загрузить из интернета по приведенной ниже ссылке. Здесь же опубликован и постоянно обновляется список опечаток с исправлениями:

realpython.com/python-basics/resources

Интерактивные тесты

Для многих глав книги были созданы бесплатные интерактивные тесты для проверки того, как вы усвоили материал (на английском языке!). К ним можно обратиться по ссылкам, приведенным в конце глав. Тесты размещаются на сайте Real Python, и их можно просматривать с телефона или с компьютера.

В каждом тесте вам предлагается ответить на серию вопросов, относящихся к конкретной главе книги. Иногда требуется выбрать один вариант из предлагаемого авторами набора, в других случаях вам придется напечатать ответ или ввести код Python. Информация о том, на какие вопросы вы ответили правильно в процессе тестирования, сохраняется.

В конце теста вам будет выставлена оценка, вычисленная по вашим результатам. Если вы не набрали 100 процентов с первой попытки, не огорчайтесь! Эти тесты и должны быть сложными. Предполагается, что вы пройдете их несколько раз, каждый раз улучшая свою оценку.

Репозиторий кода упражнений

У книги существует репозиторий кода в интернете. Он содержит примеры исходного кода, а также ответы на упражнения и задачи. Репозиторий разбит по главам, так что вы можете сравнить свой код с нашими решениями после изу­чения каждой главы. Ссылка на репозиторий:

realpython.com/python-basics/exercises

ПРИМЕЧАНИЕ

Код, приведенный в книге, был протестирован с Python 3.9 для Windows, macOS и Linux.

Лицензия на примеры кода

Сценарии Python, имеющие отношение к книге, распространяются на условиях лицензии CC0 (Creative Commons Public Domain). Это означает, что вы можете свободно использовать в своих программах любые части кода для любых целей.

Обратная связь и опечатки

Мы охотно примем ваши идеи, предложения и даже критику. Какая-то тема показалась вам непонятной? Вы нашли ошибку в тексте или в коде? Мы пропустили тему, о которой вам хотелось бы узнать побольше? Мы всегда рады возможностям улучшить свои учебные материалы. Вы можете поделиться с нами вашим мнением на:

realpython.com/python-basics/feedback

 

 

Глава 2. Установка и настройка Python

Эта книга посвящена программированию на языке Python. Вы можете прочитать ее от корки до корки, ни разу не прикоснувшись к клавиатуре, но так вы упустите самое интересное — программирование!

Чтобы получить максимум пользы от книги, вам понадобится компьютер с установленной версией Python, а также средства для создания, редактирования и сохранения файлов с кодом, который вы будете создавать.

В этой главе вы узнаете, как:

• установить последнюю версию Python 3 на вашем компьютере;

запустить IDLE — интегрированную среду разработки и обучения (Integrated Development and Learning Environment), встроенную в Python.

Итак, за дело!

2.1. О версиях Python

Многие операционные системы, включая macOS и Linux, поставляются с предустановленной версией Python. Она называется системной версией.

Системная версия используется вашей операционной системой, и обычно она уже устаревшая. Чтобы вы могли успешно воспроизводить примеры из книги, важно установить последнюю версию Python.

ВАЖНО!

Не пытайтесь удалять системную версию Python!

На компьютере можно установить несколько версий этого языка. В этой главе вы установите последнюю версию Python 3, не удаляя системную версию, которая уже может существовать на вашей машине.

ПРИМЕЧАНИе

Даже если у вас уже установлен Python 3.9, все равно стоит бегло просмотреть эту главу и лишний раз убедиться, что окружение правильно настроено для повторения примеров книги.

Глава разбита на три раздела: Windows, macOS и Ubuntu Linux. Найдите раздел, посвященный вашей операционной системе, и выполните установку и настройку, после чего можете перейти к следующей главе.

Если у вас установлена другая операционная система, обратитесь к разделу Python 3 Installation & Setup Guide на сайте Real Python и посмотрите, поддерживается ли ваша ОС. Читатели, пользующиеся планшетами и мобильными устройствами, могут заглянуть в раздел Online Python Interpreters, чтобы получить информацию о некоторых настройках для браузеров.

2.2. Windows

Здесь описана процедура установки Python 3 и запуска IDLE в системе Windows.

ВАЖНО!

Код, приведенный в книге, тестировался только для копии Python, установленной так, как описано в этом разделе.

Учтите: если вы установили Python каким-то другим способом (например, средствами Anaconda Python), могут возникнуть проблемы при запуске некоторых примеров.

Установка Python

Системная версия Python обычно не входит в поставку Windows. К счастью, установка сводится лишь к загрузке и запуску программы установки Python с сайта Python.org.

Шаг 1. Загрузите программу установки Python 3

Запустите браузер и перейдите на

https://www.python.org/downloads/windows/

Щелкните на ссылке Latest Python 3 Release - Python 3.x.x под заголовком Python Releases for Windows в верхней части страницы. На момент написания книги новейшей версией была Python 3.9.

Затем прокрутите страницу вниз и щелкните на ссылке Windows x86-64 executable installer, чтобы начать загрузку.

ПРИМЕЧАНИе

Если ваша система оснащена 32-разрядным процессором, выберите 32-разрядную программу установки. Если вы не уверены в том, является ли ваш компьютер 32-разрядным или 64-разрядным, выбирайте 64-разрядную программу установки, о которой мы говорили выше.

Шаг 2. Запустите программу установки

Откройте папку Загрузки в Проводнике Windows и дважды щелкните на файле, чтобы запустить программу установки. На экране появляется диалоговое окно, которое выглядит примерно так:

 

Если номер версии Python окажется больше 3.9.1, это нормально — главное, чтобы он был не меньше 3.

ВАЖНО!

Обязательно включите флажок Add Python 3.x to PATH. Если вы установили Python, не выбрав этот флажок, снова запустите программу установки и выберите его.

Щелкните на кнопке Install Now, чтобы установить Python 3. Дождитесь завершения установки и переходите к запуску IDLE.

Запуск IDLE

Чтобы запустить IDLE, выполните следующие действия.

1. Откройте меню Пуск и найдите папку Python 3.9.

2. Откройте папку и выберите IDLE (Python 3.9).

IDLE открывает командную оболочку (shell) Python в новом окне. Оболочка Python — интерактивная среда, в которой можно ввести код Python и немедленно выполнить его. Она отлично подходит для изучения Python!

ПРИМЕЧАНИЕ

Хотя ничто не мешает вам использовать вместо IDLE другой редактор кода, если он вам больше нравится, учтите, что в некоторых главах (особенно в главе 7 «Поиск и исправление ошибок в коде») работа построена исключительно на использовании IDLE.

Окно командной оболочки Python выглядит примерно так:

 

В верхней части окна выводится номер версии Python и информация об операционной системе. Если номер меньше 3.9, возможно, вам стоит вернуться к инструкциям по установке из предыдущего раздела и установить нужную версию.

Символы >>> образуют так называемое приглашение (prompt). Когда вы видите его, это означает, что Python ожидает от вас инструкций.

Интерактивный тест

К этой главе прилагается бесплатный интерактивный тест для проверки усвоенных вами знаний. Тест доступен на телефоне или компьютере:

realpython.com/quizzes/pybasics-setup

Итак, Python установлен в вашей системе, и мы можем написать первую программу Python! Переходите к главе 3.

2.3. macOS

Ниже описана процедура установки Python 3 и запуска IDLE в macOS.

ВАЖНО!

Код, приведенный в книге, тестировался только для копии Python, установленной так, как описано в разделе.

Учтите: если вы установили Python каким-то другим способом (например, средствами Anaconda Python), могут возникнуть проблемы при запуске некоторых примеров.

Установка Python

Чтобы установить последнюю версию Python в macOS, загрузите и запустите программу установки Python с сайта Python.org.

Шаг 1. Загрузите программу установки Python 3

Запустите браузер и перейдите на страницу:

https://www.python.org/downloads/mac-osx/

Щелкните на ссылке Latest Python 3 Release - Python 3.x.x под заголовком Python Releases for macOS в верхней части страницы. На момент написания книги последней версией была Python 3.9.

Затем прокрутите страницу вниз и щелкните на ссылке macOS 64-bit installer, чтобы начать загрузку.

Шаг 2. Запустите программу установки

Откройте Finder и дважды щелкните на файле, чтобы запустить программу установки. На экране появится диалоговое окно, которое выглядит примерно так:

 

Несколько раз нажмите Continue, пока появится предложение подтвердить лицензионное соглашение. Затем нажмите кнопку Agree.

На экране появится окно с информацией о том, в каком каталоге будет установлена копия Python и сколько места она займет. Скорее всего, изменять каталог по умолчанию не понадобится; щелкните на кнопке Install, чтобы начать установку.

Когда копирование файлов будет завершено, закройте окно программы установки кнопкой Close.

Запуск IDLE

Чтобы запустить IDLE, выполните следующие действия.

1. Откройте Finder и выберите категорию Приложения.

2. Дважды щелкните на папке Python 3.9.

3. Дважды щелкните на значке IDLE.

IDLE откроет командную оболочку (shell) Python в новом окне. Оболочка Python — интерактивная среда, в которой можно ввести код Python и немедленно выполнить его. Она отлично подходит для изучения Python!

ПРИМЕЧАНИЕ

Хотя ничто не мешает вам использовать вместо IDLE другой редактор кода, если он вам больше нравится, учтите, что в некоторых главах (особенно в главе 7 «Поиск и исправление ошибок в коде») работа построена исключительно на использовании IDLE.

Окно командной оболочки Python выглядит примерно так:

 

В верхней части окна выводится номер версии Python и информация об операционной системе. Если номер меньше 3.9, возможно, вам стоит вернуться к инструкциям по установке из предыдущего раздела.

Символы >>> образуют так называемое приглашение. Когда вы видите его, это означает, что Python ожидает от вас инструкций.

Интерактивный тест

К этой главе прилагается бесплатный интерактивный тест для проверки усвоенных вами знаний. Тест доступен на телефоне или компьютере:

realpython.com/quizzes/pybasics-setup

Итак, Python установлен в вашей системе, и мы можем написать первую программу Python! Переходите к главе 3.

2.4. Linux

Ниже описана процедура установки Python 3 и запуска IDLE в Ubuntu Linux.

ВАЖНО!

Код, приведенный в книге, тестировался только для копии Python, установленной так, как описано в разделе.

Учтите: если вы установили Python каким-то другим способом (например, средствами Anaconda Python), могут возникнуть проблемы при запуске некоторых примеров.

Установка Python

Весьма вероятно, что в вашем Ubuntu уже установлен Python, но, скорее всего, версия окажется не самой новой — например, Python 2 вместо Python 3.

Чтобы определить номер вашей версии, откройте окно терминала и попробуйте выполнить следующие команды:

$ python --version

$ python3 --version

Одна или обе команды могут вывести номер версии:

$ python3 --version

Python 3.9.1

Если версия Python — 2.x или меньше 3.9, то вам стоит заняться установкой Python. Способ установки Python в Ubuntu зависит от версии Ubuntu на вашем компьютере. Для проверки локальной версии Ubuntu можно воспользоваться следующей командой:

$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 18.04.1 LTS

Release:        18.04

Codename:       bionic

Найдите номер версии в строке Release и выполните инструкции, приведенные ниже.

Ubuntu 18.04 и выше

Ubuntu версии 18.04 по умолчанию не включает Python 3.9, но пакет доступен в репозитории Universe. Чтобы установить его, выполните следующие команды в окне терминала:

$ sudo apt-get update

$ sudo apt-get install python3.9 idle-python3.9 python3-pip

Учтите, что обновление репозитория Universe обычно отстает от графика выпуска Python. Возможно, загруженная версия Python 3.9 не будет новейшей. Тем не менее для этой книги годится любая версия Python 3.9.

Ubuntu 17 и ниже

Для Ubuntu версий 17 и ниже Python 3.9 недоступен в репозитории Universe. Его необходимо загрузить из архива PPA (Personal Package Archive). Чтобы установить Python из deadsnakes PPA (https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa), выполните следующие команды в окне терминала:

$ sudo add-apt-repository ppa:deadsnakes/ppa

$ sudo apt-get update

$ sudo apt-get install python3.9 idle-python3.9 python3-pip

Чтобы проверить, что установлена правильная версия Python, введите команду python3 --version. Если будет выведен номер версии меньше 3.9, возможно, следует ввести команду python3.9 --version. Теперь вы можете запустить IDLE и приготовиться к созданию вашей первой программы на языке Python.

Запуск IDLE

Чтобы запустить IDLE из командной строки, введите следующую команду:

$ idle-python3.9

В некоторых установках Linux можно запустить IDLE сокращенной командой:

$ idle3

IDLE открывает командную оболочку (shell) Python в новом окне. Оболочка Python — интерактивная среда, в которой можно ввести код Python и немедленно выполнить его. Она отлично подходит для изучения Python!

ПРИМЕЧАНИЕ

Хотя ничто не мешает вам использовать вместо IDLE другой редактор кода, если он вам больше нравится, учтите, что в некоторых главах (особенно в главе 7 «Поиск и исправление ошибок в коде») работа построена исключительно на использовании IDLE.

Окно командной оболочки Python выглядит примерно так:

 

В верхней части окна выводится номер версии Python и информация об операционной системе. Если номер меньше 3.9, возможно, вам стоит вернуться к инструкциям по установке из предыдущего раздела.

ВАЖНО!

Если вы запустили IDLE командой idle3 и в окне оболочки Python выводится номер версии меньше 3.9, значит, IDLE нужно запустить командой idle-python3.9 command.

Символы >>> образуют так называемое приглашение. Когда вы видите его, это означает, что Python ожидает от вас инструкций.

Интерактивный тест

К этой главе прилагается бесплатный интерактивный тест для проверки усвоенных вами знаний. Тест доступен на телефоне или компьютере:

realpython.com/quizzes/pybasics-setup

Итак, Python установлен в вашей системе, и мы можем написать первую программу  Python! Переходите к главе 3.

Глава 3. Первая программа Python

Итак, вы установили последнюю версию Python — пора браться за программирование!

В этой главе мы:

• напишем нашу первую программу на Python;

• запустим программу, содержащую ошибку, и посмотрим, что происходит;

• объявим переменную и просмотрим ее значения;

напишем комментарии.

Готовы сделать первые шаги в мир Python? Вперед!

3.1. Написание программы Python

Если вы еще не открыли IDLE, сделайте это сейчас. В IDLE вы будете работать с двумя основными окнами: интерактивным, которое открывается при запуске IDLE, и окном редактора.

Код можно вводить в любом из этих окон. Но они отличаются тем, как в них выполняется код. В этом разделе мы расскажем, как выполнять код Python в обоих окнах.

Интерактивное окно

Интерактивное окно IDLE содержит командную оболочку Python — текстовый интерфейс, используемый для взаимодействия с языком Python. Если ввести фрагмент кода Python в интерактивном окне и нажать клавишу Enter, вы немедленно увидите результаты — отсюда и название «интерактивное окно».

Это окно открывается автоматически при запуске IDLE. В верхней его части появляется следующий текст (с незначительными отличиями, которые зависят от конфигурации):

Python 3.9.1 (tags/v3.9.1:1b293b6)

[MSC v.1916 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>>

В тексте указана версия Python, выполняемая в IDLE. Также приводится ­информация об операционной системе и некоторые команды, которыми можно воспользоваться для получения справки и просмотра информации о Python.

Символы >>> образуют так называемое приглашение. Здесь вы вводите свой код.

Введите после приглашения 1+1 и нажмите клавишу Enter:

>>> 1 + 1

2

>>>

Python обрабатывает выражение, выводит результат (2), а затем — следующее приглашение. Каждый раз, когда вы выполняете код в интерактивном окне, прямо под результатом появляется новое приглашение.

Выполнение кода Python в интерактивном окне можно описать циклом, состоящим из трех этапов.

1. Python читает код, введенный в приглашении.

2. Python вычисляет результат.

3. Python выводит результат и ожидает нового ввода.

Этот цикл обычно называют циклом «чтение — вычисление — печать» (read — evaluate — print loop, или REPL).

Попробуем сделать что-то поинтереснее сложения чисел. У программистов есть традиция начинать программирование на новом языке с программы, которая выводит на экран фразу «Hello,World».

Введите после приглашения в интерактивном окне слово print, за которым следует пара круглых скобок с текстом "Hello,World":

>>> print("Hello, World")

Hello, World

Функцией называется код, который выполняет некоторую операцию и может вызываться по имени. Показанный код вызывает функцию print(), передавая ей в качестве входных данных текст "Hello,World".

Круглые скобки приказывают Python вызвать функцию print(). В них также заключено все, что должно передаваться функции на вход. Кавычки означают, что "Hello,World" — обычный текст, а не что-то иное.

ПРИМЕЧАНИЕ

В процессе ввода IDLE выделяет части вашего кода разными цветами, чтобы вам было проще их распознать. По умолчанию функции выделяются фиолетовым, а текст — зеленым цветом.

Интерактивное окно выполняет одну строку кода за раз. Такой режим выполнения удобен для небольших примеров и знакомства с языком Python, но у него есть серьезный недостаток: вам приходится вводить код по одной строке!

Также возможен другой вариант: сохранить код Python в текстовом файле, а затем выполнить сразу весь код из файла.

Окно редактора

Вы будете создавать ваши файлы Python в окне редактора IDLE. Окно редактора можно открыть командой File

New File меню, находящегося в верхней части интерактивного окна.

Когда открывается окно редактора, интерактивное окно остается открытым. В нем отображается вывод, генерируемый кодом в окне редактора, поэтому окна желательно расположить так, чтобы они были видны одновременно.

Введите в окне редактора тот же код, который использовался для вывода сообщения "Hello,World" в интерактивном окне:

print("Hello, World")

IDLE выделяет цветом код в окне редактора точно так же, как и в интерактивном окне.

ВАЖНО!

Если вы пишете код в файле Python, не нужно включать в код приглашение  >>>.

Прежде чем запускать программу, ее необходимо сохранить. Выберите в меню команду File

Save и сохраните файл под именем hello_world.py.

ПРИМЕЧАНИЕ

В некоторых системах для сохранения файлов в IDLE по умолчанию используется каталог установки Python. Не сохраняйте свои файлы в этом каталоге. Сохраните их на рабочем столе или в папке, расположенной в домашнем каталоге пользователя.

Расширение .py означает, что файл содержит код Python. Более того, при сохранении файла с любым другим расширением цветовая разметка кода исчезнет. IDLE применяет ее только в коде Python внутри файлов .py.

Запуск программ Python в окне редактора

Чтобы запустить программу, выберите команду Run

Run Module в меню окна редактора.

ПРИМЕЧАНИЕ

Нажатие клавиши F5 также запускает программу из окна редактора.

Вывод программы всегда отображается в интерактивном окне.

Каждый раз, когда вы запускаете код из файла, в интерактивном окне появляется сообщение, которое выглядит примерно так:

>>> =================== RESTART ===================

IDLE перезапускает интерпретатор Python — компьютерную программу, которая фактически выполняет ваш код при каждом запуске файла. Это гарантирует, что программы будут каждый раз выполняться в одинаковых условиях.

Открытие файлов Python в окне редактора

Чтобы открыть существующий файл в IDLE, выберите в меню команду File

Open, а затем выделите файл, который вы хотите открыть. IDLE открывает каждый файл в новом окне редактора, так что вы можете открыть несколько файлов одновременно.

Файл можно также открыть из файлового менеджера — такого, как Проводник Windows или macOS Finder. Щелкните правой кнопкой мыши на значке файла и выберите команду Edit with IDLE, чтобы открыть файл в окне редактора IDLE.

Двойной щелчок на файле .py в файловом менеджере запускает программу. Однако файл обычно выполняется системной версией Python, и окно программы исчезает сразу же после ее завершения — нередко до того, как вы увидите какой-либо вывод.

А пока, если вы хотите запустить программу Python, лучше всего сделать это в редакторе IDLE.

3.2. Ошибки

Все совершают ошибки — особенно в программировании! Даже если вы еще не сделали ни одной, мы сыграем на опережение и нарочно испортим код, чтобы посмотреть, что из этого выйдет.

Ошибки в программах делятся на два основных типа: синтаксические ошибки и ошибки времени выполнения.

Синтаксические ошибки

Синтаксическая ошибка возникает, если вы написали код, недопустимый в Python.

Давайте намеренно создадим синтаксическую ошибку. Удалите последнюю кавычку из кода в файле hello_world.py, созданного в предыдущем разделе:

print("Hello, World)

Сохраните файл и запустите его нажатием клавиши F5. Программа работать не будет! IDLE отображает окно сообщения со следующим текстом:

EOL while scanning string literal.

(EOL при сканировании строкового литерала.)

В этом тексте встречаются два термина, которые могут быть вам незнакомы.

1. Строковый литерал (string literal) — текст, заключенный в кавычки. "Hello,World" является строковым литералом.

2. EOL означает конец строки (End of Line).

Таким образом, IDLE сообщает, что Python достиг конца строки во время чтения строкового литерала. Строковые литералы должны завершаться кавычкой, предшествующей концу строки.

IDLE выделяет красным цветом строку с командой print("Hello,World), чтобы вы смогли быстро найти строку кода с синтаксической ошибкой. Без второй кавычки все символы, следующие после первой, включая завершающую круглую скобку, считаются частью строкового литерала.

Ошибки времени выполнения

IDLE обнаруживает синтаксические ошибки еще до того, как программа начнет работу. Напротив, ошибки времени выполнения происходят только в работающих программах.

Чтобы сгенерировать ошибку времени выполнения, удалите обе кавычки в файле hello_world.py:

print(Hello, World)

Вы заметили, что при удалении кавычек цвет кода меняется на черный? IDLE уже не распознает Hello,World как текст. Как вы думаете, что произойдет при запуске программы? Нажмите F5, чтобы узнать!

В интерактивном окне следующий текст выводится красным цветом:

Traceback (most recent call last):

  File "/home/hello_world.py", line 1, in <module>

    print(Hello, World)

NameError: name 'Hello' is not defined

Каждый раз, когда в программе происходит ошибка, Python останавливает программу и выводит несколько строк текста — так называемую обратную трассировку. Она содержит полезную информацию об ошибке.

Обратную трассировку лучше читать снизу вверх.

В последней строке обратной трассировки содержится имя ошибки и сообщение об ошибке. В данном случае ошибка NameError возникла из-за того, что имя Hello нигде не определено.

• В предпоследней строке выводится код, который стал причиной ошибки. Файл hello_world.py состоит всего из одной строки, так что понять, где возникла проблема, несложно. Но такая информация пригодится для больших файлов.

Третья строка с конца сообщает имя файла и номер строки, чтобы вы могли перейти к строке кода, в которой произошла ошибка.

В следующем разделе вы узнаете, как определять имена для значений в коде. Но прежде чем двигаться дальше, советую вам потренироваться в устранении синтаксических ошибок и ошибок времени выполнения — в обзорных упражнениях.

Упражнения

1. Напишите программу, которая не будет запускаться в IDLE из-за синтаксической ошибки.

2. Напишите программу, в которой ошибка происходит только во время выполнения, потому что программа содержит ошибку времени выполнения.

3.3. Создание переменной

В языке Python переменной называется имя, с которым можно связать зна­чение, чтобы в дальнейшем в коде программы ссылаться на значение по имени.

Переменные чрезвычайно важны для программирования по двум причинам.

1. Переменные предоставляют быстрый доступ к значениям. Например, результат некоторой продолжительной операции можно присвоить переменной, чтобы вашей программе не приходилось заново выполнять операцию каждый раз, когда потребуется использовать результат.

2. Переменные наделяют значения контекстом. Число 28 может означать что угодно: количество студентов в группе, количество обращений пользователя к веб-сайту и т.д. Если связать значение 28 с именем (например, num_students), его смысл становится более понятным.

В этом разделе вы научитесь использовать переменные, а также освоите некоторые соглашения, которые соблюдаются программистами Python при выборе имен переменных.

Оператор присваивания

Оператор представляет собой знак (например, +), выполняющий операцию с одним или несколькими значениями. Например, оператор + получает два числа (одно слева, а другое справа) и складывает их.

Для присваивания значений именам переменных используется специальный знак, называемый оператором присваивания (=). Оператор = получает значение, указанное справа от оператора, и присваивает его имени, указанному слева.

Изменим файл hello_world.py из предыдущего раздела, чтобы программа присваивала текст переменной file, а затем выводила ее на экран:

>>> greeting = "Hello, World"

>>> print(greeting)

Hello, world

В первой строке создается переменная с именем greeting, которой при помощи оператора = присваивается значение "Hello,World".

Команда print(greeting) выводит текст Hello,World, потому что Python ищет имя greeting, узнает, что ему было присвоено значение "Hello,World", и перед вызовом функции заменяет имя переменной значением.

Если не выполнить команду greeting="Hello,World" перед выполнением команды print(greeting), вы получите ошибку NameError, как при попытке выполнения команды print(Hello,World) в предыдущем разделе.

ПРИМЕЧАНИЕ

Хотя символ = известен нам из курса математики как знак равенства, в Python он имеет другой смысл. Это важный момент, который может сбить с толку многих начинающих программистов.

Просто запомните: когда вы видите оператор =, значение в правой части присваивается переменной в левой части.

В именах переменных важен регистр символов, так что greeting и Greeting — две разные переменные. Например, при попытке выполнения следующего кода будет выдана ошибка NameError:

>>> greeting = "Hello, World"

>>> print(Greeting)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'Greeting' is not defined

Если у вас возникнут сложности при выполнении какого-либо примера из книги, проверьте каждый символ в вашем коде, включая пробелы, — ваш код должен абсолютно соответствовать примеру в книге. Компьютер точно выполняет то, что вы прикажете, так что «почти правильно» будет недостаточно!

Правила выбора имен переменных

Имена переменных могут быть сколь угодно длинными или короткими, но есть несколько правил, которые необходимо соблюдать. Имена переменных могут состоять из латинских букв верхнего и нижнего регистра (AZ, az), цифр (09) и символов подчеркивания (_), но они не могут начинаться с цифры.

Например, каждое из следующих имен является действительным именем переменной Python:

string1

• _a1p4a

list_of_names

А вот такие имена не являются действительными именами переменных, потому что они начинаются с цифры:

9lives

• 99_balloons

2beOrNot2Be

Кроме латинских букв и цифр, имена переменных в Python могут содержать многие символы Юникода.

Юникод (Unicode) — стандарт цифрового представления символов, используемых в большинстве мировых письменных систем. Это значит, что имена переменных могут содержать буквы из других алфавитов, например буквы с диакритическими знаками (é, ü и т.д.), и даже знаки китайской, японской и арабской письменности.

Тем не менее не каждая система нормально отображает расширенные символы, поэтому лучше избегать их, если только вы не собираетесь обмениваться своим кодом с жителями других стран.

ПРИМЕЧАНИЕ

О Юникоде мы более подробно поговорим в главе 12.

Также о поддержке Юникода в Python можно узнать в официальной документации Python (https://docs.python.org/3/howto/unicode.html#python-s-unicode-support).

Даже если имя переменной допустимо, оно не всегда может оказаться хорошим.

Выбрать хорошее имя для переменной иногда на удивление нелегко. К счастью, существуют рекомендации, которые помогут вам.

Содержательные имена лучше коротких

Содержательные имена переменных очень важны, особенно в сложных программах. Часто для записи содержательных имен требуется несколько слов. Не бойтесь использовать длинные имена переменных.

В следующем примере значение 3600 присваивается переменной s:

s = 3600

Имя s не несет никакой информации. Если вы используете полное слово, вам будет намного проще понять смысл переменной в коде:

seconds = 3600

Имя seconds лучше подходит для переменной, потому что оно предоставляет больше информации. Но оно все еще не полностью передает смысл. Что такое 3600 секунд — время завершения некоторого процесса, продолжительность фильма, еще что-нибудь? Непонятно.

А вот такое имя не оставляет ни малейших сомнений относительно того, что хранится в переменной:

seconds_per_hour = 3600

Читая этот код, вы точно знаете, что 3600 — количество секунд в одном часе. Ввод имени seconds_per_hour занимает больше времени, чем ввод одной буквы s или слова seconds, но и выигрыш велик — полная ясность.

Хотя содержательные имена переменных обычно имеют большую длину, слишком длинных имен все же стоит избегать. Хорошее практическое правило — имена переменных должны содержать не более трех-четырех слов.

Соглашения о выборе имен в Python

Во многих языках программирования имена переменных обычно записывают в смешанном регистре. То есть с прописной буквы начинается каждое слово, кроме первого, а все остальные буквы остаются строчными. Например, имена numStudents и listOfNames записаны в смешанном регистре.

В Python имена переменных чаще записываются в нижнем регистре с подчеркиваниями. Здесь все буквы являются строчными, а слова разделяются символами подчеркивания. Например, имена num_students и list_of_names записаны именно по такому принципу.

Нет правил, которые бы требовали, чтобы имена переменных следовало записывать в нижнем регистре с подчеркиваниями. Однако эта практика закреплена в документе, который называется PEP 8, и часто его считают официальным руководством по стилю при написании кода Python.

ПРИМЕЧАНИЕ

Сокращение PEP означает «предложение по улучшению Python» (Python Enhancement Proposal). PEP — проектировочный документ, используемый сообществом Python для предложений о включении новых возможностей в язык.

Соблюдение стандартов, описанных в PEP 8, гарантирует, что ваш код Python будет понятен большинству Python-программистов. Это упрощает коммуникацию и сотрудничество при обмене кодом для всех участников разработки.

Упражнения

1. В интерактивном окне выведите какой-либо текст вызовом функции print().

2. В интерактивном окне присвойте строковый литерал переменной. Затем выведите содержимое переменной вызовом функции print().

3. Повторите первые два упражнения в окне редактора.

3.4. Просмотр значений в интерактивном окне

Введите следующий фрагмент в интерактивном окне IDLE:

>>> greeting = "Hello, World"

>>> greeting

'Hello, World'

Когда вы нажмете Enter после ввода второй строки с greeting, Python выведет строковый литерал, присвоенный greeting, хотя вы и не использовали функцию print(). Этот механизм называется проверкой переменных.

Теперь выведите строку, присвоенную greeting, вызовом функции print():

>>> print(greeting)

Hello, World

Вы заметили отличия между выводом, полученным при использовании print(), и выводом, полученным при простом вводе имени переменной и нажатием Enter?

Когда вы вводите имя переменной greeting и нажимаете Enter, Python выводит значение, присвоенное переменной, в том виде, в котором оно отображается в коде. Вы присвоили greeting строковый литерал "Hello,World", поэтому 'Hello,World' выводится в кавычках.

ПРИМЕЧАНИЕ

Строковые литералы Python могут создаваться в одинарных или двойных кавычках. На сайте Real Python мы используем двойные кавычки там, где это возможно, тогда как вывод IDLE по умолчанию заключается в одинарные кавычки.

В Python «Hello, World» и 'Hello, World' означают одно и то же — здесь важнее всего последовательно подходить к использованию кавычек. О строках более подробно мы расскажем в главе 4.

С другой стороны, print() выводит более удобочитаемое представление значения переменной, что для строковых литералов означает вывод текста без кавычек.

Иногда вывод и проверка переменной выдают одинаковые результаты:

>>> x = 2

>>> x

2

>>> print(x)

2

Здесь переменной x присваивается число 2. Как при вызове print(x), так и при проверке x результат выводится без кавычек, потому что 2 является числом, а не текстом. В большинстве случаев проверка переменной дает более полезную информацию, чем print().

Предположим, имеются две переменные: x, которой присваивается значение 2, и y, которой присваивается строковый литерал "2". В этом случае print(x) и print(y) выводят одно и то же:

>>> x = 2

>>> y = "2"

>>> print(x)

2

>>> print(y)

2

Однако при проверке x и y проявляются различия между значениями переменных:

>>> x

2

>>> y

'2'

Главный вывод таков: print() выводит удобочитаемое представление значения переменной, тогда как проверка переменной выводит значение в том виде, в котором оно встречается в коде.

Учтите, что проверка переменной работает только в интерактивном окне. Например, попробуйте выполнить следующую программу из окна редактора:

greeting = "Hello, World"

greeting

Программа выполняется без ошибок, но ничего не выводит!

3.5. Заметки на память

Программисты нередко читают код, написанный ими же некоторое время назад, и спрашивают себя: «Что он делает?» Если вы давно не обращались к своему коду, вам трудно будет вспомнить, почему вы написали его именно так, а не иначе!

Чтобы избежать этой проблемы, вы можете оставить комментарии в своем коде. Комментарии — это текст, который никак не влияет на выполнение программы. Они только описывают, что делает код или почему программист принял конкретные решения.

Как пишутся комментарии

Самый простой способ вставить комментарий — это разместить символ # в начале новой строки. Во время выполнения кода Python игнорирует строки, начинающиеся с #.

Комментарии, начинающиеся с новой строки, называются блоковыми. Также можно использовать встроенные комментарии, они размещаются в одной строке с кодом, к которому относятся. Просто поставьте в конце строки символ #, а за ним разместите текст комментария.

Пример программы, содержащей комментарии обоих типов:

# Блоковый комментарий.

greeting = "Hello, World"

print(greeting) # Встроенный комментарий.

Символ # можно использовать и в строке. Например, Python не примет символ # в этой строке за начало комментария:

>>> print("#1")

#1

В общем случае рекомендуется использовать как можно более короткие комментарии, но иногда требуется больше текста, чем помещается в одной строке. В таком случае можно продолжить комментарий в новой строке, которую также следует начать с символа #:

# Моя первая программа.

# Она выводит фразу "Hello, World".

# Комментарии в ней длиннее кода!

greeting = "Hello, World"

print(greeting)

Также комментарии используют для временного исключения кода в процессе тестирования программы. Разместив символ # в начале строки, можно выполнить программу так, словно эта строка не существует, но без фактического удаления кода.

Чтобы закомментировать фрагмент кода в IDLE, выделите этот фрагмент и нажмите соответствующую комбинацию клавиш:

Windows: Alt+3;

• macOS: Ctrl+3;

Ubuntu Linux: Ctrl+D.

Чтобы убрать комментарии, выделите закомментированные строки и нажмите:

Windows: Alt+4;

• macOS: Ctrl+4;

Ubuntu Linux: Ctrl+Shift+D.

Рассмотрим некоторые распространенные соглашения, относящиеся к комментариям в коде.

Соглашения и вредные привычки

Согласно PEP 8, комментарии надо всегда записывать в виде завершенных предложений, а символ # следует отделять от первого слова комментария одним пробелом:

# Этот комментарий отформатирован по правилам PEP 8.

#А этот нет

Для встроенных комментариев PEP 8 рекомендует отделять код от символа # как минимум двумя пробелами:

phrase = "Hello, World" # Этот комментарий соответствует PEP 8.

print(phrase)# А этот нет.

PEP 8 рекомендует осмотрительно использовать комментарии. Главной вредной привычкой программисты считают комментарии, описывающие то, что и так очевидно из чтения кода.

Например, комментарий в следующем коде не нужен:

# Вывести "Hello, World"

print("Hello, World")

Этот комментарий лишний, потому что сам код наглядно показывает, что он делает. Комментарии лучше использовать для пояснения трудного для понимания кода или объяснения того, почему что-то вы делаете именно так, а не иначе.

3.6. Итоги и дополнительные ресурсы

В этой главе вы написали и выполнили свою первую программу на языке Python! Это была небольшая программа, которая выводит текст "Hello,World" при помощи функции print().

Далее вы узнали о синтаксических ошибках, которые возникают до выполнения программы с недействительным кодом Python, и об ошибках времени выполнения, происходящих только во время выполнения программы.

Вы научились присваивать значения переменным оператором присваивания =, а также проверять значения переменных в интерактивном окне. Наконец, вы узнали, как включать в код полезные комментарии на случай, если вы или кто-то другой будете просматривать его в впоследствии.

Интерактивный тест

К этой главе прилагается бесплатный интерактивный тест для проверки усвоенных вами знаний. Тест доступен на телефоне или компьютере:

realpython.com/quizzes/pybasics-first-program

Дополнительные ресурсы

За дополнительной информацией обращайтесь к следующим ресурсам:

«11 Beginner Tips for Learning Python Programming» (https://realpython.com/python-beginner-tips/)

• «Writing Comments in Python (Guide)» (https://realpython.com/python-comments-guide/)

Глава 4. Строки и строковые методы

Многие программисты разных специализаций ежедневно имеют дело с текстом. Например, веб-разработчики работают с текстовыми данными веб-форм. Эксперты по аналитическим данным обрабатывают текст для извлечения данных и выполнения таких операций, как анализ эмоциональной окраски, для идентификации и классификации мнений в блоке текста.

Текстовые блоки в Python называются строками (strings). Для обработки строк используются специальные функции, называемые строковыми методами. Существуют строковые методы для преобразования строки из нижнего регистра в верхний, удаления пропусков в начале или конце строки, замены частей строки другим текстом и многих других операций.

В этой главе вы научитесь:

• обрабатывать строки с использованием строковых методов;

• работать с пользовательским вводом;

• работать с числовыми данными в строках;

форматировать строки для вывода.

За дело!

4.1. Что такое строка?

В главе 3 вы создали строку "Hello,World" и вывели ее в интерактивном окне IDLE при помощи функции print(). В этом разделе мы более детально разберемся в том, что собой представляют строки, а также изучим различные способы их создания в Python.

Строковый тип данных

Строки принадлежат к числу фундаментальных типов данных Python. Тип данных определяет, какого рода данные представляет значение. Строки используются для представления текста.

ПРИМЕЧАНИЕ

В Python существуют другие встроенные типы данных. Например, числовые типы данных будут рассматриваться в главе 5, а логические типы данных — в главе 8.

Строки называют фундаментальным типом данных, потому что они не могут быть разбиты на меньшие значения другого типа. Не все типы данных являются фундаментальными. В главе 9 я расскажу о составных типах данных, также называемых структурами данных.

Для строкового типа данных в Python есть специальное сокращенное имя: str. Его можно вывести при помощи функции type(), которая используется для определения типа данных заданного значения.

Введите следующие команды в интерактивном окне IDLE:

>>> type("Hello, World")

<class 'str'>

Вывод <class'str'> означает, что значение "Hello,World" является экземпляром типа данных str. Другими словами, "Hello,World" — строка.

ПРИМЕЧАНИЕ

Пока слово class можно рассматривать как синоним для типа данных, хотя на самом деле оно имеет более конкретный смысл. О том, что такое классы, мы расскажем в главе 10.

Функция type() также работает для значений, которые были присвоены переменной:

>>> phrase = "Hello, World"

>>> type(phrase)

<class 'str'>

Строки обладают тремя важными свойствами.

1. Строки содержат отдельные буквы или знаки, которые называются символами.

2. У строк есть длина — количество символов, содержащихся в строке.

3. Символы в строке образуют последовательность; это означает, что каждый символ в строке занимает позицию с определенным номером.

Посмотрим, как создаются строки.

Строковые литералы

Как вы уже видели, строку можно создать, заключив текст в кавычки:

string1 = 'Hello, World'

string2 = "1234"

Для создания строки можно использовать как одинарные кавычки (string1), так и двойные (string2) — важно лишь, чтобы в начале и в конце строки использовались кавычки одного вида.

Любая строка, созданная заключением текста в кавычки, называется строковым литералом. Все строки, которые встречались вам до настоящего момента, были строковыми литералами.

ПРИМЕЧАНИЕ

Не каждая строка является строковым литералом. Некоторые строки вводятся пользователем или читаются из файла. Так как в этом случае они не ­заключаются в кавычки, такие строки не являются строковыми литералами.

Кавычки, в которые заключена строка, называются ограничителями, потому что они сообщают Python, где начинается и где завершается строка. Если одну разновидность кавычек вы используете в качестве ограничителя, другую разновидность можете использовать внутри строки:

string3 = "We're #1!"

string4 = 'I said, "Put it over by the llama."'

После того как Python прочитает первый ограничитель, он будет считать все последующие символы частью строки, пока не достигнет второго парного ограничителя. Вот почему вы можете использовать одинарную кавычку в строке, заключенной в двойные кавычки, и наоборот.

Если же вы попытаетесь использовать двойны

...