Лутц М. - Изучаем Python (1077325), страница 16
Текст из файла (страница 16)
Интерактивная оболочка часто будет использоваться в этой книге для демонстрации небольших примеров. Самое первое, что вы должны запомнить; если вы чувствуете, что не понимаете, как работает тот или иной участок программного кода на языке Ру(Ьоп, запустите интерактивный сеанс и попробуйте ввести этот фрагмент, чтобы посмотреть, что произойдет.
В этом случае вы едва ли что-нибудь испортите (чтобы стать опасным для системы, вы должны хорошо знать системные интерфейсы). Интерактивная оболочка может использоваться для тестирования программного кода, сохраненного в файлах, что избавит вас от необходимости вводить значительные объемы программного кода при работе в интерактивном режиме (ведь программный код, который здесь вводится, не сохраняется). В интерактивном режиме вы можете импортировать файлы модулей и тестировать функциональные возможности, которые они предоставляют, вводя вызовы функций в строке с приглашением к вводу. В более широком понимании интерактивная оболочка — это инструмент для тестирования программных компонентов независимо от их происхождения — вы можете вводить вызовы функций из связанных библиотек на языке С, создавать экземпляры классов )азга в интерпретаторе )у(Ьоп и многое другое.
Интерпретатор поддерживает возможность проведения экспериментов и исследований при программировании, и вы найдете это удобным, начав работать с ним. Интерактивный режим полняться сразу же после ввода. Более того, поскольку в интерактивном сеансе результаты выражений, которые вы вводите, печатаются автоматически, вам необязательно явно вводить «рг1пс» после подсказки; »> тешавг)док = 'окду' » > 1 ее Ьв г) до к ОКду »> 2 ° * 8 256 »> а для завершения сеанса используйте коибииациш клавиш Стг!-Р или Стг1-' % В этом примере две последние введенные строки являются выражениями (1еасег)аск и 2 * 8), и результаты их вычисления отображаются автоматически. Чтобы завершить работу интерактивного сеанса, как показано в данном примере, и вернуться в системную командную строку, в (Лк)1Х-подобной системе нажмите комбинацию клавиш ССг(-0, а в системах МЗ-1)03 и тт'(пг(отша — комбинацию С(г(-1. В интегрированной среде разработки 11П Е, которая будет рассматриваться ниже, нужно либо нажать комбинацию клавиш С(й-0, либо просто закрыть окно.
В приведенных примерах мы сделали немногое — всего лишь ввели несколько инструкций рг(пт, одну инструкцию присваивания и несколько выражений, подробнее о которых мы поговорим позднее. Главное, на что следует обратить внимание, — интерпретатор немедленно выполняет введенный программный код, сразу же после нажатия клавиши 1п(ег. Например, когда в строке приглашения к вводу >» была введена первая инструкция ргтпт, результат (строка) был немедленно выведен на экран. Нам не потребовалось создавать файл с исходным текстом программы и для выполнения программного кода не понадобилось сначала компилировать и компоновать его, что является обычным делом при использовании таких языков программирования, как С или С++. Как будет показано в последующих главах, при работе с интерактивной оболочкой вы можете также вводить многострочные инструкции— такие инструкции будут выполняться только после ввода всех строк.
Помимо ввода команды рутпсп в окне командной оболочки, вы также можете запустить подобный интерактивный сеанс в главном окне интегрированной среды разработки 1Р1 Е или, в тйт)пг(отта, выбрав пункт Ру(йоп (сопнпапб-((пе) (РуСЬоп (командная строка)) в меню кнопки Пуск (5СагС), как показано на рис.
2.1. В любом случае вы получите строку приглашения к вводу»> с одинаковыми функциональными возможностями — инструкции выполняются сразу же после ввода. Использование интерактивного режима Несмотря на то что интерактивный режим прост в использовании, я хочу дать несколько советов начинающим, которые следует запомнить: ° Вводите только инструкции на языке РуЫтоп. Прежде всего, следует запомнить, что в интерактивном режиме допускается вводить только 76 Глаза 3.
Как пользователь запускает программы программный код на языке Ру()топ, никаких системных команд. В программном коде Ру()топ предусмотрены возможности выполнять системные команды (например с помощью сэ. зуэтеэ), но они не отличаются простотой по сравнению с непосредственным вводом команд. ° Инструкция рг1пт необходима только в файлах. Поскольку в интерактивном режиме интерпретатор автоматически выводит результаты вычисления выражений, вам не требуется вводить полные инструкции рг(пт при работе в интерактивном режиме.
Это замечательная особенность, но она часто приводит пользователей в замешательство, когда они приступают к созданию программного кода в файлах: чтобы программный код в файлах мог что-то выводить, вы должны использовать инструкции ргтпт, потому что в этом случае результаты выражений уже не выводятся автоматически. Запомните, вы должны использовать инструкцию ргтлт в файлах, но не в интерактивном режиме.
° Не используйте отступы в интерактивном режиме (пока). При вводе программ на языке Ру()топ, как в интерактивном режиме, так и в текстовых файлах, вы обязаны начинать все не вложенные инструкции с позиции 1 (то есть с самого начала строки). Если вы не будете следовать этому правилу, РуФЬоп может вывести сообщение «Вуп(ахЕггог» (синтаксическая ошибка). Пока мы не подойдем к главе 10„все инструкции, которые вам придется вводить, будут не вложенными, поэтому пока данное правило распространяется на все, что будет вводиться. То же относится и к классам Ру(Ьоп.
Ведущий пробел в строке вызывает сообщение об ошибке. ° Будьте внимательны, когда строка приглашения к вводу изменяется на строку ввода составной инструкции. Нам не придется сталкиваться с составными (многострочными) инструкциями до главы 10, но вы должны знать, что при вводе второй и каждой последующей строки составной инструкции в интерактивном режиме строка приглашения к вводу может изменяться.
В простом окне с командной строкой приглашение к вводу >» во второй и каждой последующей строке изменяется на..., в интегрированной среде ПП Е все строки, кроме первой, автоматически получают отступы. В любом случае, чтобы в интерактивном режиме сообщить интерпретатору, что вы приступаете к вводу многострочной инструкции, необходимо начинать ее ввод с ввода пустой строки (делается это нажатием клавиши Гптег в начале строки). В файлах, в противоположность этому, пустые строки интерпретатором игнорируются. Почему это имеет важное значение, вы узнаете в главе 10. А пока, если вдруг случится, что вы получите приглашение к вводу...
или пустую строку при вводе программного кода, это скорее всего будет означать, что каким-то образом вам удалось заставить интерактивную оболочку Ру»)топ думать, что вы начали ввод многострочной инструкции. Попробуйте нажать комбинацию С(г(-С или клавишу Епсег, чтобы вернуться к основному приглашению к вводу. Пригла- Системная командная строка и файлы шения»> и... также могут изменяться (они доступны во встроенном модуле эуз), но в последующих листингах я буду предполагать, что они не изменялись. Системная командная строка и файлы Хотя интерактивная командная оболочка является прекрасным инструментом для проведения экспериментов, тем не менее у нее есть один существенный недостаток: программы, которые вы вводите во время интерактивного сеанса, исчезают сразу же после того, как интерпретатор Ру$)топ выполнит их.
Программный код, который вводится в интерактивном режиме, нигде не сохраняется, поэтому вы не сможете запустить его еще раз, не введя код с самого начала. Операция копирования и вставки, а также возможность повторного выполнения команды, могут оказать некоторую помощь, но они не способны принести пользу, когда вы начнете писать большие программы. Чтобы воспользоваться операцией копирования и вставки, вы должны исключить из копирования строку приглашения к вводу, результаты, которые программа выводит в процессе выполнения, и т. д. Чтобы хранить программы длительное время, вам необходимо сохранять программный код в файлах, которые обычно называются модулями. Модули — это простые текстовые файлы, содержащие инструкции на языке Рут)топ.
Как только такой файл будет создан, вы можете предложить интерпретатору Румтоп выполнить инструкции в нем столько раз, сколько пожелаете. Такой файл можно запустить на выполнение разными способами — из командной строки системы, щелчком на ярлыке файла, из интегрированной среды 1РЬЕ и другими способами. Независимо от выбранного вами способа интерпретатор Рут)топ будет выполнять весь программный код в модуле от начала до конца всякий раз, когда вы будете его запускать.
Терминология в этой области может несколько изменяться. Например, файлы модулей часто называются лрограатмами на языке Ру$)топ, где под программой понимается последовательность заранее написанных инструкций, сохраненных в файле для обеспечения возможности многократного использования. Файлы модулей, которые запускаются на выполнение непосредственно, иногда называют сценариями — этим неофициальным термином обозначаются файлы программ верхнего уровня. Термин «модульь зарезервирован для обозначения файлов, которые могут импортироваться другими файлами.
(Подробнее о программах з верхнего уровняэ и об импорте будет говориться чуть ниже.) Как бы вы ни называли их, в следующих нескольких разделах исследуются способы запуска программного кода, который был сохранен в файлах модулей. В этом разделе вы узнаете, как запускать файлы наиболее типичным способом: перечислением их имен в команде рутлоп при запуске из системной командной строки.
В качестве первого упражнения откройте привычный для вас текстовый редактор (например, ой 78 Глава 3, Как пользователь запускает программы МоФераг) или редактор 10ЬЕ) и сохраните следующие две инструкции в файле с именем врат.ру: Ог!пг 2 . ° 8 а Возведение а степень рг! лг ' гве Отзт згзе ' » ' ат 11те ' а Знак » означает конкатанацио строк Этот файл содержит две инструкции ртпг и пару комментариее справа. (Текст, который следует за символом 8, просто игнорируется и считается комментарием, созданным для удобства человека; комментарии не являются частью инструкций.) Пока не нужно вникать в синтаксис программного кода в этом файле. Главное здесь то, что программный код вводится в текстовый файл, а не в интерактивной командной оболочке интерпретатора РуФЬоп.