Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Интерактивный режим

19 июля 2011 г. Archy Просмотров: 54244 RSS 1
Запуск программ на Python

Пожалуй, самый простой способ запускать программы на языке Python - это

вводить инструкции непосредственно в командной строке интерпретатора, 

которая иногда называется интерактивной оболочкой. Запустить эту 

командную строку можно разными способами - в интегрированной среде разработки,

в системной консоли и так далее. Предположим, что интерпретатор установлен

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

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

вашей операционной системы. Например:

% python
Python 3.0.1 (г301:69561, Feb 13 2009, 20:04:18) [MSC v.1500 32 bit (Intel)] ...
Type "help", "copyright", "credits" or "license" for more information.

После ввода слова «python» командная оболочка вашей операционной системы

запустит интерактивный сеанс работы с интерпретатором Python (символ «%»

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

Понятие системной командной строки является универсальным, но как получить

доступ к ней, зависит от используемой платформы:

• В операционной системе Windows команду python можно ввести в консоли

DOS (она же - Командная Строка (Command Prompt), которую обычно можно

найти в разделе Стандартные (Accessories) меню Все программы (Programs), 

которое появляется после щелчка на кнопке Пуск (Start)), или в диалоге Пуск

(Start) -> Выполнить... (Run...).

• В операционных системах UNIX, Linux и Mac OS X эту команду можно

ввести в командной оболочке или в окне терминала (например, в xterm или

в консоли, где запущена командная оболочка, такая как ksh или csh).

• В других операционных системах можно использовать похожие или какие-

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

интерактивный сеанс в наладонных устройствах, обычно достаточно 

щелкнуть на ярлыке Python.

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

Если вы не включили путь к каталогу установки Python в переменную 

окружения PATH, вместо простого слова «python» вам может потребоваться ввести

полный путь к выполняемой программе. В операционной системе Windows

можно попробовать ввести команду C:\Python30\python (для версии 3.0); в UNIX

и в Linux: /usr/local/bin/python или /usr/bin/python:

C:\misc> c:\python30\python
Python 3.0.1 (r301:69561. Feb 13 2009, 20:04:18) [MSC v.1500 32 bit (Intel)] ...
Type "help", "copyright", "credits" or "license" for more information.

Или перед вводом команды «python» можно перейти в каталог, куда был 

установлен интерпретатор Python. Для этого в операционной системе Windows, 

например, можно выполнить команду cd c:\python30, например:

C:\misc> cd C:\Python30
C:\Python30> python
Python 3.0.1 (r301:69561, Feb 13 2009, 20:04.18) [MSC v.1500 32 bit (Intel)] ...
Type "help", "copyright", "credits" or "license" for more information

В Windows, кроме ввода команды python в окне командной оболочки, запустить

интерактивный сеанс можно также, открыв главное окно IDLE (обсуждается

ниже) или выбрав пункт Python (command line) (Python (командная строка)) в 

подменю Python в меню Пуск (Start), как показано на рис. 2.1 в главе 2. В обоих случаях

открывается интерактивный сеанс Python с одинаковыми возможностями, то

есть ввод команды в командной оболочке не является обязательным условием.

Выполнение инструкций в интерактивном режиме

Интерактивный сеанс работы с интерпретатором Python начинается с вывода

двух строк информационного текста (которые я буду опускать в примерах для

экономии места), затем выводится приглашение к вводу >», когда 

интерпретатор Python переходит в режим ожидания ввода новой инструкции или 

выражения. При работе в интерактивном режиме результаты выполнения ваших

инструкций будут выводиться сразу же после нажатия клавиши Enter вслед за

строкой с приглашением >».

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

(в действительности инструкция print была инструкцией в Python 2.6, а в

Python 3.0 она стала функцией, поэтому круглые скобки являются 

обязательным элементом только в версии 3.0):

% python
»> printC Hello world!')
Hello world'
>» printB ** 8)
256

Вам пока также не стоит вникать в детали инструкций print, приведенных

здесь, - изучение синтаксиса мы начнем в следующей главе. В двух словах,

эта инструкция вывела текстовую строку и целое число, как видно в строках,

которые были напечатаны ниже строк с приглашением к вводу >» (выражение

2 ** 8 на языке Python означает 2 в степени 8).

При работе в интерактивном режиме, как показано в этом примере, вы можете

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

же после ввода. Более того, поскольку в интерактивном сеансе результаты 

выражений, которые вы вводите, выводятся автоматически, совершенно 

необязательно явно использовать функцию «print»:

>» lumberjack = 'okay'
>» lumberjack
'okay'
>» 2 ** 8
256
»> tf Для выхода используйте клавиши Ctrl-D (в UNIX) или Ctrl-Z (в Windows)
%

В этом примере первая строка сохраняет значение в переменной, а две 

последние введенные строки являются выражениями (lumberjack и 2 ** 8), результаты

вычисления которых отображаются автоматически. Чтобы завершить работу

интерактивного сеанса, как показано в данном примере, и вернуться в 

системную командную строку, в UNIX-подобной системе нажмите комбинацию 

клавиш Ctrl-D, а в системах MS-DOS и Windows - комбинацию Ctrl-Z. В графическом

интерфейсе IDLE, который будет рассматриваться ниже, нужно либо нажать

комбинацию клавиш Ctrl-D, либо просто закрыть окно.

В приведенных примерах мы сделали немногое - всего лишь ввели несколько

инструкций print, одну инструкцию присваивания и несколько выражений,

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

внимание, - интерпретатор немедленно выполняет введенный программный

код сразу же после нажатия клавиши Enter.

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

инструкция print, результат (строка) был немедленно выведен на экран. Нам не

потребовалось создавать файл с исходным текстом программы и для 

выполнения программного кода не понадобилось сначала компилировать и 

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

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

при работе с интерактивной оболочкой вы можете также вводить 

многострочные инструкции - такие инструкции будут выполняться только после ввода

всех строк.

Когда может пригодиться интерактивный режим?

В интерактивном режиме интерпретатор немедленно выполняет введенные 

инструкции и выводит результат, но эти инструкции не сохраняются в файле. Это

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

отрывки программного кода, но при этом интерактивный режим 

предоставляет отличную возможность для проведения экспериментов с возможностями

языка и тестирования файлов программ на лету.

Экспериментирование

Благодаря тому, что программный код выполняется немедленно, 

интерактивный режим превращается в замечательный инструмент для проведения 

экспериментов с конструкциями языка. Интерактивная оболочка часто будет

использоваться в этой книге для демонстрации небольших примеров. Самое

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

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

интерактивный сеанс и попробуйте ввести этот фрагмент, чтобы посмотреть,

что произойдет.

Например, предположим, что вы изучаете некоторый фрагмент программы на

языке Python и наталкиваетесь на выражение Spam1' * 8, которое вам кажется

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

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

можно просто выполнить его в интерактивной оболочке:

>» ' Spam!' * 8 <== Изучение методом проб и ошибок
'Spam1Spam1Spam1Spam1Spam1Spam1Spam1Spam1'

Немедленная обратная связь, которую предоставляет интерактивная 

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

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

дублирование строки: в языке Python оператор * выполняет операцию умножения

над числами, но если левый операнд является строкой, он действует как 

оператор многократной конкатенации строки с самой собой (подробнее о строках

рассказывается в главе 4).

При проведении подобных экспериментов вы едва ли что-нибудь испортите, по

крайней мере, пока. Чтобы причинить серьезный ущерб, например удалить

файл или выполнить команду системной командной оболочки, необходимо

Для примера посмотрите, что произойдет, если допустить ошибку в 

интерактивной оболочке:

>» X <== Допущена ошибка
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError name 'X' is not defined

В языке Python считается ошибкой пытаться использовать переменную 

прежде чем ей будет присвоено значение (в противном случае, если бы переменные

заполнялись некоторым значением по умолчанию, некоторые ошибки было бы

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

а пока обратите внимание, что допущенная ошибка не вызвала ни аварийного

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

информативное сообщение об ошибке с указанием номера строки, где она была

допущена, и вы получили возможность продолжить сеанс работы с 

интерпретатором. В действительности, как только вы более или менее освоитесь с 

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

вполне достаточную помощь при отладке (подробнее об отладке 

рассказывается во врезке «Отладка программ на языке Python»).

Тестирование

Помимо функции инструмента, предоставляющего возможность 

поэкспериментировать в процессе изучения языка, интерактивная оболочка также 

является идеальным средством тестирования программного кода, сохраненного

в файлах. В интерактивном режиме вы можете импортировать файлы модулей

и тестировать функциональные возможности, которые они предоставляют,

вводя вызовы функций в строке с приглашением к вводу.

Например, ниже приводится пример тестирования функции, находящей

в одном из модулей, входящих в стандартную библиотеку Python (она 

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

своими собственными функциями, как только начнете создавать свои модули:

»> import os
>>> os.getcwd() <== Тестирование "на лету"
'с \\Python30'

В более широком понимании интерактивная оболочка - это инструмент для

тестирования программных компонентов независимо от их происхождения -

вы можете вводить вызовы функций из связанных библиотек на языке С,

создавать экземпляры классов Java в интерпретаторе Jython и делать многое

другое. Интерпретатор поддерживает возможность проведения экспериментов

и исследований при программировании, и вы найдете это удобным, начав 

работать с ним.

Использование интерактивного режима

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

несколько советов начинающим, которые следует запомнить. Я привожу 

списки наиболее распространенных ошибок, подобные приведенному в этой главе,

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

головной боли:

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

хорошо знать системные интерфейсы языка Python!). Простой программный

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

• Вводите только инструкции на языке Python. Прежде всего следует 

запомнить, что в интерактивном режиме допускается вводить только 

программный код на языке Python, никаких системных команд. В программном

коде Python предусмотрены возможности выполнять системные команды

(например, с помощью os. system), но они не отличаются простотой по 

сравнению с непосредственным вводом команд.

• Инструкция print необходима только в файлах. Поскольку в 

интерактивном режиме интерпретатор автоматически выводит результаты 

вычисления выражений, вам не требуется вводить полные инструкции print при

работе в интерактивном режиме. Это замечательная особенность, но она 

часто приводит пользователей в замешательство, когда они приступают к 

созданию программного кода в файлах: чтобы программный код в файлах мог

что-то выводить, вы должны использовать инструкции print, потому что

в этом случае результаты выражений уже не выводятся автоматически. 

Запомните, вы должны использовать инструкцию print в файлах, но не в 

интерактивном режиме.

• Не используйте отступы в интерактивном режиме (пока). При вводе 

программ на языке Python, как в интерактивном режиме, так и в текстовых

файлах, вы обязаны начинать все не вложенные инструкции с позиции 1

(то есть с самого начала строки). Если вы не будете следовать этому правилу,

Python может вывести сообщение «SyntaxError» (синтаксическая ошибка),

потому что пробелы слева от инструкции рассматриваются 

интерпретатором как отступ, обозначающий принадлежность инструкции к вложенной

группе. Пока мы не подойдем к главе 10, все инструкции, которые вам 

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

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

Ведущий пробел в строке вызывает сообщение об ошибке.

• Будьте внимательны, когда строка приглашения к вводу изменяется на

строку ввода составной инструкции. Нам не придется сталкиваться с 

составными (многострочными) инструкциями до главы 4 и вводить их до

главы 10, но вы должны знать, что при вводе второй и каждой последующей

строки составной инструкции в интерактивном режиме строка 

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

приглашение к вводу >» во второй и каждой последующей строке 

изменяется на ..., в интерфейсе IDLE все строки, кроме первой, автоматически 

получают отступы.

Почему это так важно, вы узнаете в главе 10. А пока, если вдруг 

случится, что вы получите приглашение к вводу .. или пустую строку при вводе

программного кода, это, скорее всего, будет означать, что каким-то 

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

начали ввод многострочной инструкции. Попробуйте нажать комбинацию

Ctrl-C или клавишу Enter, чтобы вернуться к основному приглашению к 

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

встроенном модуле sys), но в последующих листингах я буду предполагать, что

они не изменялись.

• При работе в интерактивном режиме завершайте ввод составных 

инструкций вводом пустой строки. Ввод пустой строки в интерактивном режиме

(нажатие клавиши Enter в начале строки) сообщает интерпретатору, что вы

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

файлах, напротив, в конце составных инструкций пустая строка не требуется

и если она имеется, интерпретатор будет просто игнорировать ее. Если при

работе в интерактивном режиме не завершить ввод составной инструкции

двумя нажатиями клавиши Enter, у вас может сложиться впечатление, что

все повисло, потому что интерпретатор не будет делать ничего, ожидая, 

когда вы повторно нажмете клавишу Enter!

• В интерактивном режиме за один раз выполняется одна инструкция. При

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

инструкцию и только потом вводить другую. Для простых инструкций это

требование соблюдается само собой, так как нажатие клавиши Enter 

приводит к выполнению введенной инструкции. Однако при работе с составными

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

на выполнение вводом пустой строки, и только потом можно будет вводить

новую инструкцию.

Ввод многострочных инструкций

Рискую повториться и все же я получил письма от двух читателей, которые

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

я дополнил эту главу, поэтому я считаю важным остановиться на них. Я 

познакомлю вас с многострочными (или составными) инструкциями в 

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

Поскольку поведение составных инструкций в файлах и в интерактивной 

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

предупреждения.

Во-первых, при работе в интерактивном режиме завершайте ввод составных

инструкций, таких как циклы for и условные операторы if, вводом пустой

строки. Вы должны нажать клавишу Enter дважды, чтобы завершить 

многострочную инструкцию и выполнить ее. Например:

>» for х in ' spam':

print(x) <== Здесь нажать Enter дважды, чтобы выполнить этот цикл

В файлах сценариев не требуется добавлять пустую строку после составных

инструкций - это необходимо только при работе в интерактивном режиме.

В файле пустые строки не являются обязательными, и они просто 

игнорируются, а в интерактивном режиме они завершают многострочные инструкции.

Обратите также внимание на то, что интерактивная оболочка выполняет по

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

вы должны дважды нажать клавишу Enter, чтобы выполнить цикл или другую

многострочную инструкцию:

>» for х in 'spam':
print(x) <== Здесь нажать Enter дважды, прежде чем вводить новую инструкцию
... print('done')
File "<stdin>". line 3
pnnt('done')
SyntaxError: invalid syntax

Это означает, что вы не можете копировать и вставлять сразу несколько строк

программного кода в интерактивном режиме, если копируемый фрагмент не

содержит пустые строки после каждой составной инструкции. Такой код 

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

Комментариев: 1
  1. Здравствуйте, а не подскажите как запускать в интерактивном режиме целый скрипт?

    То есть, существует файл hello.py

    И нужно его запустить в интерактивном режиме.

    после входа в интерактивный режим, если набрать просто hello.py, то выдает ошибку

    Traceback (most recent call last):

    File "", line 1, in

    NameError: name 'synthesize' is not defined

    Если набрать python synthesize.py

    то

    File "", line 1

    python synthesize.py

    ^

    SyntaxError: invalid syntax

    Вообще не понимаю что делать

    Можете подсказать пожалуйста