Как устроен Python. Гид для разработчиков, программистов и интересующихся
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

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

 

Мэтт Харрисон

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

2018

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

Технический редактор О. Букатка

Литературные редакторы О. Букатка, А. Бульченко

Художники С. Заматевская , А. Руденко

Корректоры С. Беляева, И. Тимофеева

Верстка Л. Егорова

 

Мэтт Харрисон

Как устроен Python. Гид для разработчиков, программистов и интересующихся. — СПб.: Питер, 2018.

 

ISBN 978-5-4461-0906-7

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

 

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

 

Предисловие

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

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

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

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

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

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

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

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

1. Почему Python?

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

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

Python повышает производительность программирования. Я перешел на Python из мира Perl. На работе меня включили в команду с коллегой, хорошо владевшим Tcl. Ни один из нас не хотел переходить в другой лагерь, хотя мы оба были заинтересованы в изучении Python. За три дня наш прототип был готов — намного быстрее, чем ожидалось, и мы оба моментально забыли свои предыдущие «goto-языки». Меня привлекло в Python прежде всего то, что этот язык казался мне абсолютно логичным. Я твердо уверен, что каждый, у кого есть хоть какой-то опыт программирования, сможет изучить основы Python всего за несколько дней.

Python легок в освоении. Для начинающих программистов Python станет отличным трамплином. Научиться писать простые программы очень легко, однако Python также хорошо масштабируется для сложных «корпоративных» систем. Наконец, Python подойдет для любого возраста — я сам видел, как люди в возрасте от 7 до 80+ лет изучали основы программирования на примере Python.

2. Какая версия Python?

Эта книга написана на основе Python 3. Версия Python 2 верно служила нам много лет. Фонд Python Software Foundation, управляющий выпуском новых версий, заявил, что эпоха Python 2 подошла к концу. Соответственно, после 2020 года язык поддерживаться не будет.

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

2.1. Установка Python

Python 3 не устанавливается по умолчанию на большинстве платформ. Некоторые дистрибутивы Linux включают Python 3, но пользователям Windows и Mac придется установить его отдельно.

Если вы используете Windows, откройте раздел загрузок на сайте Python1 и найдите ссылку Python 3.6 Windows Installer. По ссылке загружается файл .msi, который устанавливает Python на машину с системой Windows. Загрузите файл, откройте его двойным щелчком и выполните инструкции, чтобы завершить установку.

ПРИМЕЧАНИЕ

В установочной программе для Windows имеется флажок «Add Python to PATH» (Добавить Python в переменную PATH). Проследите за тем, чтобы этот флажок был установлен. В этом случае при запуске из режима командной строки система будет знать, где найти исполняемый файл Python. Если флажок все же не будет установлен, откройте свойства системы (нажмите клавиши WIN+Pause или выполните команду environ из меню Пуск), откройте вкладку Дополнительно и щелкните на кнопке Переменные среды. Обновите переменную PATH и добавьте следующие пути:

C:\Program Files\Python 3.6;C:\Program Files\Python 3.6\Scripts

Если в вашей системе Windows включен механизм UAC (User Account Control), то путь будет выглядеть так:

C:\Users\<имя_пользователя>\AppData\Local\Programs\Python\Python36

Пользователи Mac загружают с сайта Python установочную программу для Mac.

ПРИМЕЧАНИЕ

Другой способ установки Python основан на использовании дистрибутива Anaconda2. Он работает в Windows, Mac и Linux, а также предоставляет много заранее построенных двоичных файлов для выполнения научных вычислений. Традиционно устанавливать эти библиотеки было утомительно, потому что в них были упакованы библиотеки, написанные на С и Fortran, и это требовало дополнительной настройки для компиляции.

Пользователи Mac также могут присмотреться к Homebrew-версии3. Если вы уже знакомы с Homebrew, проблема решается простой командой brew install python3.

2.2. Какой редактор?

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

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

При выборе редактора следует обратить внимание на интеграцию со средой Python REPL4. Вскоре мы рассмотрим пример для IDLE. Желательно, чтобы выбранный вами редактор обладал сходной функциональностью.

Среди популярных редакторов с достойной поддержкой Python можно выделить Emacs, Vim, Atom, Visual Studio Code и Sublime Text. Если вас интересуют более мощные редакторы со встроенной поддержкой рефакторинга и автозавершения, обратите внимание на популярные PyCharm и Wing IDE.

2.3. Итоги

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

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

2.4. Упражнения

1. Установите Python 3 на своем компьютере. Убедитесь в том, что Python успешно запускается.

2. Если вы привыкли работать в конкретном редакторе, узнайте, реализована ли в нем поддержка Python. В частности, умеет ли он:

• автоматически выделять элементы синтаксиса Python;

• выполнять код Python в REPL;

• осуществлять пошаговое выполнение кода Python в отладчике.

1 https://www.python.org/download

2 https://www.anaconda.com/download/

3 https://brew.sh

4 REPL — сокращение от Read, Evaluate, Print Loop (цикл «чтение-вычисление-вывод»).Вскоре мы рассмотрим пример использования REPL.

4 REPL — сокращение от Read, Evaluate, Print Loop (цикл «чтение-вычисление-вывод»).Вскоре мы рассмотрим пример использования REPL.

При выборе редактора следует обратить внимание на интеграцию со средой Python REPL4. Вскоре мы рассмотрим пример для IDLE. Желательно, чтобы выбранный вами редактор обладал сходной функциональностью.

Если вы используете Windows, откройте раздел загрузок на сайте Python1 и найдите ссылку Python 3.6 Windows Installer. По ссылке загружается файл .msi, который устанавливает Python на машину с системой Windows. Загрузите файл, откройте его двойным щелчком и выполните инструкции, чтобы завершить установку.

Другой способ установки Python основан на использовании дистрибутива Anaconda2. Он работает в Windows, Mac и Linux, а также предоставляет много заранее построенных двоичных файлов для выполнения научных вычислений. Традиционно устанавливать эти библиотеки было утомительно, потому что в них были упакованы библиотеки, написанные на С и Fortran, и это требовало дополнительной настройки для компиляции.

Пользователи Mac также могут присмотреться к Homebrew-версии3. Если вы уже знакомы с Homebrew, проблема решается простой командой brew install python3.

3. Интерпретатор

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

У такого подхода есть как достоинства, так и недостатки. Как нетрудно понять, трансляция «на ходу» может занимать много времени. Интерпретируемый код — такой, как программы Python, — может работать в 10–100 раз медленнее программ на языке C. С другой стороны, написание кода на Python оптимизирует время разработки. Программы на языке Python нередко получаются в 2–10 раз короче своих аналогов на языке C. Кроме того, этап компиляции может занимать довольно много времени и отвлекать программиста между разработкой и отладкой.

Многие разработчики и компании охотно идут на этот компромисс. Небольшие программы (то есть содержащие меньше строк кода) быстрее пишутся и создают меньше проблем с отладкой. Труд программистов обходится дорого — если удастся переложить часть работы на оборудование, это может обойтись дешевле, чем привлечение дополнительных специалистов. Отладить 10 строк кода проще, чем отладить 100 строк кода. Исследования показали, что количество ошибок в коде пропорционально количеству строк. Следовательно, если язык позволяет написать меньше строк кода для решения некоторой задачи, то, скорее всего, программа будет содержать меньше ошибок. Иногда скорость выполнения программы не столь важна, и во многих практических случаях Python работает достаточно быстро. Кроме того, были предприняты проекты, направленные на ускорение работы интерпретатора Python, например PyPy5.

 

Рис. 3.1. Различия между компилируемым и интерпретируемым языком. Компилятор обрабатывает программный код и создает исполняемый файл. Интерпретатор создает исполняемый файл, который загружает программный код и управляет его выполнением

3.1. REPL

Для Python также существует интерактивный интерпретатор, который называется REPL (Read Evaluate Print Loop — цикл «чтение-вычисление-вывод»). REPL в цикле ожидает, пока появятся входные данные, читает и обрабатывает (интерпретирует) их, после чего выводит результат. Запуская исполняемый файл python3, вы запускаетe интерактивный интерпретатор Python. Другие среды, например IDLE, также содержат встроенный интерактивный интерпретатор.

ПРИМЕЧАНИЕ

В этой книге Python 3 обычно запускается командой python3. В системе Windows исполняемому файлу присвоено имя python. Если вы работаете в Windows, замените имя python3 именем python. В системе Unix менять ничего не нужно.

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

 

Рис. 3.2. Чтобы запустить REPL, введите в приглашении командной строки команду python3. Команда открывает сеанс Python

 

Рис. 3.3. Чтобы запустить REPL из IDE, щелкните на значке IDLE или введите команду python3 -m idlelib.idle

IDLE (редактор, включенный в поставку Python) также можно запустить командой python3 -m idlelib.idle.

ПРИМЕЧАНИЕ

Некоторые дистрибутивы Linux включают не все библиотеки из стандартной библиотеки Python. Это неприятно, но на то есть своя причина: на сервере не нужны библиотеки для создания клиентских приложений. По этой причине Ubuntu и Arch (среди прочих) в установке по умолчанию не включают библиотеки графического интерфейса, необходимые для IDLE.

Если вы увидите ошибку, которая выглядит примерно так:

$ python3 -m idlelib.idle

** IDLE can't import Tkinter.

Your Python may not be configured for Tk. **

это означает, что в системе отсутствует библиотека tkinter.

В Ubuntu следует выполнить команду:

$ sudo apt-get install tk-dev

В Arch эта команда выглядит так:

$ sudo pacman -S tk

 

3.2. Пример использования REPL

Следующий пример показывает, почему интерактивный интерпретатор REPL получил свое название. Введите команду python3 в командной строке6 или запустите IDLE; вы увидите приглашение >>>.

Введите 2 + 2, как показано ниже, и нажмите клавишу Enter:

$ python3

>>> 2 + 2

4

>>>

В этом примере мы ввели команду python3, которая запустила интерпретатор. Первое приглашение >>> можно рассматривать как первую часть названия (R — чтение): Python ожидает входных данных. Мы ввели 2 + 2, интерпретатор прочитал и обработал (E — обработка) их. Далее выводится (P — вывод) результат этого выражения — 4. Второе приглашение >>> относится к циклу (L — цикл): интерпретатор ожидает новых входных данных.

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

ПРИМЕЧАНИЕ

Приглашение >>> используется только в первой строке входных данных. Если команда, введенная в REPL, занимает более одной строки, следует приглашение ...:

>>> sum([1, 2, 3, 4, 5,

... 6, 7])

Эти приглашения определяются в модуле sys:

>>> import sys

>>> sys.ps1

'>>> '

>>> sys.ps2

'... '

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

REPL — весьма полезный инструмент. При помощи интерактивного интерпретатора можно писать небольшие функции, тестировать фрагменты кода и даже выполнять вычисления, как на калькуляторе. А еще интереснее пойти в другом направлении: запустите свой код Python в REPL. Код будет выполнен, а вы сможете проверить его состояние в REPL (скоро мы покажем, как сделать это в IDLE).

Символы >>> образуют приглашение. Здесь вы вводите свою программу. Введите после >>> команду print("hello world") и нажмите клавишу Enter. Проследите за тем, чтобы перед словом print не было ни пробелов, ни табуляций. Результат должен выглядеть так:

>>> print("hello world")

hello world

Если все получилось именно так — поздравляем, вы написали свою первую программу на Python. Считайте, что отныне официально приобщились к миру программирования. Вы только что запустили программу «hello world» — классическую программу, которую многие по традиции пишут в начале знакомства с новым языком. Чтобы выйти из REPL в терминале, введите quit(). Пользователи Unix также могут нажать клавиши Ctl+D.

 

Рис. 3.4. IDLE пытается указать, где произошла ошибка. Цветовое выделение после world обозначает место, в котором ошибка была обнаружена

ПРИМЕЧАНИЕ

Программирование требует точности. Если при вводе print("hello world") пропустить всего один символ, результат может оказаться совсем другим, например, таким:

>>> print("hello world

File "<stdin>", line 1

print("hello world

^

SyntaxError: EOL while scanning string literal

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

3.3. Итоги

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

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

Также существуют другие разновидности REPL для Python. Один из популярных вариантов — Jupyter7, REPL на базе веб-технологий. Начав с REPL, вскоре вы сможете перейти к другим, более мощным разновидностям.

3.4. Упражнения

1. Откройте REPL для Python 3 и выполните программу «hello world». Если вы забыли, как выглядит эта однострочная программа, просмотрите эту главу.

2. Откройте REPL из IDLE и выполните программу «hello world».

5 https://www.pypy.org

6 Чтобы вызвать приглашение командной строки, в меню Пуск системы Windows введите cmd (или нажмите клавиши Win+R). Чтобы быстро вызвать окно терминала на компьютере Mac, нажмите Command+Space, введите Terminal и нажмите Return. Если вы установили Python 3, то теперь сможете запустить его на любой платформе командой python3.

7 https://jupyter.org

Также существуют другие разновидности REPL для Python. Один из популярных вариантов — Jupyter7, REPL на базе веб-технологий. Начав с REPL, вскоре вы сможете перейти к другим, более мощным разновидностям.

6 Чтобы вызвать приглашение командной строки, в меню Пуск системы Windows введите cmd (или нажмите клавиши Win+R). Чтобы быстро вызвать окно терминала на компьютере Mac, нажмите Command+Space, введите Terminal и нажмите Return. Если вы установили Python 3, то теперь сможете запустить его на любой платформе командой python3.

Многие разработчики и компании охотно идут на этот компромисс. Небольшие программы (то есть содержащие меньше строк кода) быстрее пишутся и создают меньше проблем с отладкой. Труд программистов обходится дорого — если удастся переложить часть работы на оборудование, это может обойтись дешевле, чем привлечение дополнительных специалистов. Отладить 10 строк кода проще, чем отладить 100 строк кода. Исследования показали, что количество ошибок в коде пропорционально количеству строк. Следовательно, если язык позволяет написать меньше строк кода для решения некоторой задачи, то, скорее всего, программа будет содержать меньше ошибок. Иногда скорость выполнения программы не столь важна, и во многих практических случаях Python работает достаточно быстро. Кроме того, были предприняты проекты, направленные на ускорение работы интерпретатора Python, например PyPy5.

Следующий пример показывает, почему интерактивный интерпретатор REPL получил свое название. Введите команду python3 в командной строке6 или запустите IDLE; вы увидите приглашение >>>.

4. Запуск программ

Хотя интерактивный интерпретатор может принести пользу в ходе разработки, вам (и другим разработчикам) неизбежно потребуется запускать программы вне REPL. В Python и это делается просто. Чтобы запустить программу Python с именем hello.py, откройте окно терминала, перейдите в каталог с программой и введите команду

$ python3 hello.py

ПРИМЕЧАНИЕ

В этой книге перед командой, при ее выполнении из командной строки, будет ставиться символ $. По этому символу команды можно отличить от входных данных интерпретатора (>>> или ...) и содержимого файлов (без префикса).

ПРИМЕЧАНИЕ

Скорее всего, попытка выполнения приведенной выше команды python3 hello.py завершится ошибкой, если в системе нет файла с именем hello.py.

В главе 3 мы использовали REPL для выполнения программы «hello world»; как выполнить ту же программу в автономном режиме? Создайте файл с именем hello.py в своем любимом текстовом редакторе.

Включите в файл hello.py следующую команду:

print("hello world")

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

 

Рис. 4.1. Среда IDLE запущена, и в ней открыто новое окно редактора (с именем Untitled, потому что файл еще не был сохранен)

ПРИМЕЧАНИЕ

Команда python3 без параметров запускает интерпретатор. Команда python3 имя_файла.py выполняет этот файл.

Если вам удалось запустить файл hello.py, команда выведет текст hello world.

4.1. Запуск программ из IDLE

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

$ python3 -m idlelib.idle

При запуске IDLE вы увидите окно оболочки (shell) — еще одной разновидности REPL языка Python. Если ввести код, Python немедленно выполнит его. Чтобы создать программу, необходимо создать файл, содержащий код Python. Для этого откройте меню File и выберите команду New File. На экране появляется новое окно — причем это не окно оболочки, а окно редактора. Обратите внимание: окно пустое и в нем нет приглашения Python. В этом окне вводится код Python.

 

Рис. 4.2. Код, введенный в окне редактора

 

Рис. 4.3. Результат выполнения программы «hello world» в IDLE

Введите код в этом окне. Так как мы рассматриваем пример с программой «hello world», введите команду

print("hello world")

Вы заметите, что IDLE выделяет print и «hello world» разными цветами. Это выделение, называемое цветовым выделением синтаксиса, делает код более понятным. Теперь код нужно запустить. Проще всего сделать это нажатием клавиши F5. Другой вариант — открыть меню Run и выбрать команду Run Module. IDLE предложит сохранить файл. Сохраните его под именем hello.py. IDLE передает фокус окну оболочки, выводит строку с сообщением о перезапуске оболочки, а затем выводит сообщение hello world.

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

Если вам понадобится информация о навигации в режиме командной строки, обратитесь к приложению А.

4.2. Усовершенствования для UNIX

На платформах UNIX (в частности, к этой категории относятся Linux и OS X) такие файлы, как hello.py, часто называются сценариями (scripts). Сценарий тоже является программой, этот термин часто используется для того, чтобы отличать интерпретируемый код от машинного. В данном случае сценарии являются интерпретируемым кодом, а результат компиляции такого языка, как C, представляет собой машинный код.

ПРИМЕЧАНИЕ

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

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

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

#!/usr/bin/env python3

print("hello world")

ПРИМЕЧАНИЕ

Новая первая строка приказывает командному интерпретатору, который выполняет файл, выполнить остаток файла с исполняемым файлом #!/usr/bin/env python3. (Сценарии командного интерпретатора обычно начинаются с #!/bin/bash или #!/bin/sh.) Сохраните файл hello.py с новой первой строкой.

СОВЕТ

Запись #!/usr/bin/env — удобное обозначение первого исполняемого файла python3, найденного в переменной среды PATH. Так как исполняемый файл python3 хранится в разных местах на разных платформах, такое решение получается кросс-платформенным. В системе Windows эта строка игнорируется. Если только у вас нет полной уверенности в том, что вы хотите запустить конкретную версию Python, вероятно, стоит использовать запись #!/usr/bin/env.

Жестко закодированные пути вида

• #!/bin/python3

• #!/usr/bin/python3.3

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

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

$ chmod +x hello.py

Команда устанавливает для файла бит исполнения. В среде UNIX существуют разные разрешения (устанавливаемые при помощи соответствующих битов) для чтения, записи и исполнения файла. Если для файла установлен бит исполнения, то при запуске файла среда UNIX проверяет его первую строку и выполняет файл так, как указано.

СОВЕТ

Если вы захотите узнать, что делает команда chmod, вызовите справку по ней командой man:

$ man chmod

 

Теперь для выполнения файла достаточно ввести его имя в терминале и нажать Enter. Введите

$ ./hello.py

Команда должна запустить вашу программу (или сценарий). Обратите внимание на символы ./ перед именем программы. Обычно при вводе команды в терминале среда ищет исполняемый файл в PATH (переменная среды, определяющая, в каких каталогах хранятся исполняемые файлы). Если только переменная PATH не содержит . (или родительский каталог hello.py), перед именем необходимо указать ./ (или полный путь к исполняемому файлу). В противном случае вы получите сообщение об ошибке:

$ hello.py

bash: hello.py command not found

Да, вся эта работа была проделана только для того, чтобы вам не приходилось вводить команду python3 hello.py. Почему? Прежде всего потому, что вашей программе было бы лучше называться hello (без суффикса .py.). А может быть, вы захотите разместить программу в PATH, чтобы ее можно было запустить в любой момент. Назначив файл исполняемым и добавив символы #!, можно создать файл, который выглядит как обычный исполняемый файл. Такому файлу не нужно расширение .py, а для его выполнения не придется вводить команду python3.

4.3. Итоги

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

4.4. Упражнения

1. Создайте файл hello.py, содержащий код из этой главы.

2. Запустите hello.py из терминала.

3. Запустите hello.py из IDLE.

4. Если вы предпочитаете работать в другом редакторе, запустите hello.py из него.

5. Если вы работаете на платформе Unix, создайте файл с именем hello. Добавьте в него код «hello world» и внесите необходимые изменения, чтобы код можно было выполнить командой

./hello

5. Запись и чтение данных

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

5.1. Простой вывод

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

>>> print('Hello there')

Hello there

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

>>> print('I am', 10, 'years old')

I am 10 years old

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

5.2. Получение данных от пользователя

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

>>> name = input('Enter your name:')

Если ввести эту команду в интерпретаторе (пробелы по обе стороны от = необязательны, но их рекомендуется вводить, чтобы код лучше читался), может показаться, что ваш компьютер завис. На самом деле Python ожидает, когда вы что-нибудь введете и нажмете Enter. После нажатия Enter введенные данные будут сохранены в переменной name. Введите имя Matt и нажмите клавишу Enter. Если теперь вывести значение name, программа выведет только что введенное вами значение:

>>> print(name)

Matt

ПРИМЕЧАНИЕ

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

>>> value = input('Enter a number:')

3

>>> other = input('Enter another:')

4

Если теперь попытаться сложить value с other, будет выполнена конкатенация (сцепление строк), потому что в обеих переменных хранятся строки:

>>> type(value)

<class 'str'>

>>> value + other

'34'

Если вы хотите сложить числа, содержащиеся в строках, их необходимо преобразовать из строкового типа к числовому. Для преобразования строк к другому типу, например целому или вещественному, используются функции int и float соответственно.

Чтобы сложить значения value и other в числовом виде, преобразуйте их в числа функцией int:

>>> int(value) + int(other)

7

В следующей главе числовые и строковые типы будут рассмотрены более подробно.

5.3. Итоги

Python предоставляет две функции для простого вывода данных на экран и получения данных от пользователя. Это функции print и input. Помните, что при вызове функции input вы всегда получаете строку.

5.4. Упражнения

1. Напишите код Python, который запрашивает у пользователя его имя, после чего выводит Hello и введенное имя.

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