Первые шаги =========== Давайте посмотрим, как создать традиционную программу "Hello World" на Python. Это научит вас писать, сохранять и выполнять программы на Python. Существует два способа запуска программ на Python: использование интерактивного приглашения интерпретатора и использование файла с текстом программы. Сейчас мы увидим, как пользоваться обоими методами. Использование командной строки интерпретатора --------------------------------------------- Откройте окно терминала (как было описано в главе :doc:`Установка `) и запустите интерпретатор Python, введя команду ``python3`` и нажав ``Enter``. Пользователи Windows могут запустить интерпретатор в командной строке, если установили переменную ``PATH`` надлежащим образом. Чтобы открыть командную строку в Windows, зайдите в меню "Пуск" и нажмите "Выполнить...". В появившемся диалоговом окне введите "cmd" и нажмите ``Enter``; теперь у вас будет всё необходимое для начала работы с python в командной строке DOS. Если вы используете IDLE, нажмите "Пуск" --> "Программы" --> "Python 3.0" --> "IDLE (Python GUI)". Как только вы запустили ``python3``, вы должны увидеть ``>>>`` в начале строки, где вы можете что-то набирать. Это и называется *командной строкой интерпретатора Python*. Теперь введите ``print('Hello World')`` и нажмите клавишу ``Enter``. В результате должны появиться слова "Hello World". Вот пример того, что вы можете увидеть на экране, если будете использовать компьютер с Mac OS X. Информация о версии Python может отличаться в зависимости от компьютера, но часть, начинающаяся с приглашения (т.е. от ``>>>`` и далее) должна быть одинаковой на всех операционных системах. .. sourcecode:: python $ python3 Python 3.3.0 (default, Oct 22 2012, 12:20:36) [GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print('hello world') hello world >>> Обратите внимание, что Python выдаёт результат работы строки немедленно! Вы только что ввели одиночный "оператор" Python. ``print`` используется для того, чтобы (что неудивительно\ [1]_ ) напечатать любое переданное в него значение. В данном случае мы передали в него текст "Hello World", который и был напечатан на экране. .. tip:: Как выйти из командной строки интерпретатора Если вы используете IDLE или оболочку GNU/Linux или BSD, вы можете выйти из командной строки интерпретатора нажатием ``Ctrl-D`` или введя команду ``exit()`` (примечание: не забудьте написать скобки, "()"), а затем нажав клавишу ``Enter``. Если вы используете командную строку Windows, нажмите ``Ctrl-Z``, а затем нажмите клавишу ``Enter``. Выбор редактора --------------- Поскольку мы не можем набирать программу в командной строке интерпретатора каждый раз, когда нам нужно что-то запустить, нам понадобится сохранять программы в файлах, чтобы потом иметь возможность запускать их сколько угодно раз. Прежде чем приступить к написанию программ на Python в файлах, нам нужен редактор для работы с файлами программ. Выбор редактора крайне важен. Подходить к выбору редактора следует так же, как и к выбору личного автомобиля. Хороший редактор поможет вам легко писать программы на Python, делая ваше путешествие более комфортным, а также позволяя быстрее и безопаснее достичь вашей цели. Одно из самых основных требований -- это *подсветка синтаксиса*, когда разные элементы программы на Python раскрашены так, чтобы вы могли легко *видеть* вашу программу и ход её выполнения. Если вы не знаете, с чего начать, я бы порекомендовал воспользоваться программой `Komodo Edit `_, которая доступна для Windows, Mac OS X и GNU/Linux. Если вы пользуетесь Windows, **Не используйте Блокнот** -- это плохой выбор, поскольку он не обладает функцией подсветки синтаксиса, а также не позволяет автоматически вставлять отступы, что очень важно в нашем случае, как мы увидим позже. Хорошие редакторы, как Komodo Edit, позволяют делать это автоматически. Опытные программисты, должно быть, уже используют `Vim `_ или `Emacs `_. Не стоит даже и говорить, что это два наиболее мощных редактора, и вы только выиграете от их использования для написания программ на Python. Лично я пользуюсь ими обоими для большинства своих программ, и даже написал `книгу о Vim `_. Я настоятельно рекомендую вам решиться и потратить время на изучение Vim или Emacs, поскольку это будет приносить вам пользу долгие годы. Однако, как я уже писал выше, новички могут пока просто остановиться на Komodo Edit и сосредоточиться на изучении Python, а не текстового редактора. Я повторюсь ещё раз: обязательно выберите подходящий редактор -- это сделает написание программ на Python более простым и занимательным. Для пользователей Vim Существует хорошее введение в `использование Vim как мощного IDE для Python, автор -- John M Anderson `_. Также я рекомендую `плагин jedi-vim `_ и `мой собственный конфигурационный файл `_. Для пользователей Emacs Существует хорошее введение в `использование Emacs как мощного IDE для Python, автор -- Ryan McGuire `_. Также я рекомендую `Конфигурацию dotemacs от BG `_. Использование программных файлов -------------------------------- А теперь давайте вернёмся к программированию. Существует такая традиция, что какой бы язык программирования вы ни начинали учить, первой вашей программой должна быть программа "Привет, Мир!". Это программа, которая просто выводит надпись "Привет, Мир!". Как сказал Simon Cozens\ [2]_, это "традиционное заклинание богов программирования, которое поможет вам лучше изучить язык". Запустите выбранный вами редактор, введите следующую программу и сохраните её под именем ``helloworld.py`` . Если вы пользуетесь Komodo Edit, нажмите "Файл" --> "Новый" --> "Новый файл", введите строку: .. sourcecode:: python print('Привет, Мир!') В Komodo Edit нажмите "Файл" --> "Сохранить" для сохранения файла. Куда сохранить файл? В любую папку, расположение которой вы знаете. Если вы не понимаете, что это значит, то создайте новую папку и используйте её для всех ваших программ на Python: * ``C:\py`` в Windows * ``/tmp/py`` в GNU/Linux * ``/tmp/py`` в Mac OS X Чтобы создать папку, воспользуйтесь командой ``mkdir`` в терминале. Например, ``mkdir /tmp/py``. .. important:: Не забывайте указывать расширение файла ``.py``. Например, "``file.py``". В Komodo Edit нажмите "Инструменты" --> "Запуск команды", наберите ``python3 helloworld.py`` и нажмите "Выполнить". Вы должны увидеть вывод, показанный на скриншоте ниже. .. figure :: komodo-edit-hello-world.png :alt: Screenshot of Komodo Edit with the Hello World program Но всё-таки лучше редактировать программу в Komodo Edit, а запускать в терминале: 1. Откройте терминал, как описано в главе :ref:`Установка `. 2. Перейдите в каталог, в котором вы сохранили файл. Например, ``cd /tmp/py``. 3. Запустите программу, введя команду ``python3 helloworld.py``. Вывод программы показан ниже. :: $ python3 helloworld.py Привет, Мир! Если у вас получился такой же вывод, поздравляю! -- вы успешно выполнили вашу первую программу на Python. Вы только что совершили самый сложный шаг в обучении программированию, заключающийся в написании своей первой программы! Если вы получите сообщение об ошибке, введите вышеуказанную программу *в точности* так, как показано здесь, и запустите снова. Обратите внимание, что Python различает регистр букв, то есть ``print`` -- это не то же самое, что ``Print`` (обратите внимание на букву ``p`` в нижнем регистре в первом случае и на букву ``P`` в верхнем регистре во втором). Также убедитесь, что перед первым символом в строке нет пробелов или символов табуляции -- позже мы увидим, почему это важно. **Как это работает** Программа на Python состоит из *выражений*. В нашей первой программе имеется всего лишь одно выражение. В этом выражении мы вызываем функцию ``print``, которая просто выводит текст ``'Привет, Мир!'``. О функциях мы узнаем в :doc:`одной из последующих глав `, а пока вам достаточно понять, что всё, что вы укажете в скобках, будет выведено на экран. В данном примере мы указали ``'Привет, Мир!'``. .. Python никак не обрабатывает комментарии, кроме специального случая в первой строке. Она называется ''строка shebang''; когда первые два символа файла с программой -- `#!`, за которыми следует путь к некоторой программе, это указывает вашей Unix-подобной системе, что вашу программу нужно запускать именно в этом интерпретаторе, когда вы ''исполняете'' её. Это объясняется подробно в следующем параграфе. Помните, что вы всегда можете запустить свою программу на любой платформе, указав интерпретатор напрямую в командной строке, как например, команда `python helloworld.py` . .. Важно Вставляйте разумные комментарии в ваши программы, чтобы объяснить некоторые важные детали вашей программы - это будет полезно для тех, кто будет читать вашу программу, так как им легче будет понять, что программа делает. Помните, что таким человеком можете оказаться вы сами через полгода! .. _first-executable: Исполнимые программы на Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Это касается только пользователей GNU/Linux и Unix, но пользователям Windows тоже будет полезно об этом знать. Каждый раз, когда нам нужно запустить программу на Python, нам приходится в явном виде запускать ``python3 foo.py``. Но почему бы нам не запускать её точно так же, как и все другие программы? Этого можно достичь при помощи так называемого *hashbang*. Добавьте строку, указанную ниже, в *самое начало* вашей программы: .. sourcecode:: python #!/usr/bin/env python3 Теперь ваша программа должна выглядеть так: .. sourcecode:: python #!/usr/bin/env python3 print('Привет, Мир!') Теперь необходимо установить программе атрибут исполнимости, используя команду `chmod`, а затем *выполнить* программу. Команда ``chmod`` здесь используется для изменения режима файла\ [3]_ добавлением атрибута исполнимости для всех пользователей в системе\ [4]_. :: $ chmod a+x helloworld.py После этого мы можем запускать программу напрямую, потому что наша операционная система запустит ``/usr/bin/env``, который, в свою очередь, найдёт Python 3, а значит, сможет запустить наш файл. :: $ ./helloworld.py Привет, Мир! Здесь "``./``" обозначает, что программа находится в текущем каталоге. Ради интереса можете даже переименовать файл в просто "``helloworld``" и запустить его как ``./helloworld``, и это также сработает, поскольку система знает, что запускать программу нужно интерпретатором, положение которого указано в первой строке файла программы. Но до сих пор мы могли выполнять свою программу только если знали полный путь к ней. А что, если нам нужно запускать эту программу из любого каталога? Это можно организовать, расположив свою программу в одном из каталогов, перечисленных в переменной окружения ``PATH``. При попытке запуска какой-либо программы система ищет её в каталогах, перечисленных в переменной окружения ``PATH``, и запускает. Таким образом, мы можем сделать программу доступной из любого места, скопировав её в один из каталогов, перечисленных в ``PATH``. :: $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/swaroop/bin $ cp helloworld.py /home/swaroop/bin/helloworld $ helloworld Привет, Мир! Мы можем вывести на экран значение переменной ``PATH`` при помощи команды ``echo``, добавив перед именем переменной символ ``$``, чтобы указать оболочке, что мы хотим получить значение этой переменной. Мы видим, что ``/home/swaroop/bin`` -- один из каталогов в переменной PATH, где *swaroop* -- это имя пользователя, которое я использую в своей системе. В вашей системе, скорее всего, будет аналогичный каталог для вашего пользователя. Вы также можете добавить какой-либо каталог к переменной ``PATH`` -- это можно сделать, выполнив ``PATH=$PATH:/home/swaroop/mydir``, где ``'/home/swaroop/mydir'`` -- это каталог, который я хочу добавить к переменной ``PATH``. Этот метод полезен для написания сценариев, которые будут доступны для запуска в любой момент из любого места. По сути, это равносильно созданию собственных команд, как ``cd`` или любой другой, которые часто используются в терминале GNU/Linux или приглашении DOS. .. note:: Когда речь идёт о Python, слова "программа" или "сценарий (скрипт)" обозначают одно и то же. Получение помощи ---------------- Для быстрого получения информации о любой функции или операторе Python служит встроенная функция ``help``. Это особенно удобно при использовании командной строки интерпретатора. К примеру, выполните ``help(print)`` -- это покажет справку по функции ``print``, которая используется для вывода на экран. .. note:: Для выхода из справки нажмите ``q``. Аналогичным образом можно получить информацию почти о чём угодно в Python. При помощи функции ``help()`` можно даже получить описание самой функции ``help``! Если вас интересует информация об операторах, как например, ``return``, их необходимо указывать в кавычках (например, ``help('return')``), чтобы Python понял, чего мы хотим. Резюме ------ Теперь вы умеете с лёгкостью писать, сохранять и запускать программы на Python. И поскольку сейчас вы уже используете Python, давайте узнаем больше о его основных принципах. Примечания ---------- .. [1] "print" -- *англ.* "Печатать" (*прим. перев.*) .. [2] Автор восхитительной книги "Beginning Perl" .. [3] **ch**\ ange **mod**\ e -- англ. "изменить режим" (*прим. перев.*) .. [4] В указанной команде буква "**a**" взята из слова "**a**\ ll" (*англ.* "все"), а буква "**x**" -- из слова "e\ **x**\ ecute" (*англ.* "исполнять") -- *прим. перев.*