| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Глава 2. Использование интерпретатора Python 2.1 Запуск интерпретатора Интерпретатор Python обычно инсталлирован как
Поскольку выбор каталога, где будет находиться интерпретатор, является опцией инсталляции, то возможно размещение и в другом месте; проверьте с Вашим местным Python-гуру или системным администратором. (Например, Интерпретатор действует подобно shell UNIX: в случае его вызова со стандартным вводом, соединенным с устройством tty, он считывает и выполняет команды интерактивно; в случае же его вызова с передачей аргумента - имени файла, или с файлом в качестве стандартного ввода, он читает и исполняет скрипт, записанный в этом файле. Третьим способом запуска интерпретатора является " Существует разница между " Когда выполняется файл скрипта, иногда полезна возможность перехода в интерактивный режим после завершения работы скрипта. Это можно сделать передав параметр 2.1.1 Передача аргументов Имя скрипта и дополнительные аргументы передаются скрипту в переменной 2.1.2 Интерактивный режим Когда команды читаются из tty, говорят, что интерпретатор находится в интерактивном режиме. В этом режиме приглашение ввода следующей команды выводится в виде первичного приглашения, обычно, три знака "больше" ( Интерпретатор печатает приветствующее сообщение, констатируя его номер версии и замечание об авторском праве, перед выдачей первого приглашения: python Python 1.4 (Oct 25 1996) [GCC 2.7.2] Copyright 1991-1996 Stichting Mathematisch Centrum, Amsterdam >>> 2.2 Интерпретатор и его окружение 2.2.1 Обработка ошибок Когда возникают ошибки, интерпретатор печатает сообщение об ошибке и "след" в стеке 4 . В интерактивном режиме, после этого снова выдается первичное приглашение; при чтении программы из файла, происходит выход с нулевым статусом выхода, после печати "следа" в стеке. (Исключения, обработанные веткой Ввод прерывающего символа (обычно Control-D или DEL) в ответ на первичное или вторичное приглашение прекращает ввод и приводит снова к выдаче первичного приглашения 5 . Нажатие прерывающей комбинации клавиш в то время, когда выполняется команда, вызывает исключение 2.2.2 Путь поиска модулей Когда импортируется модуль, например, с именем Фактически, модули ищутся в списке каталогов, заданном в переменной 2.2.3 "Компилированные" Python-файлы Поскольку важно ускорить выполнение коротких программ, которые используют большое количество стандартных модулей, то если существует файл Обычно, Вам не потребуется ничего делать для создания файла 2.2.4 Выполнимые (executable) Python-скрипты На BSD-шных UNIX системах скрипты Python можно сделать прямо выполняемыми, подобно скриптам shell, путем добавления строки
(предполагая, что это корректный путь расположения интерпретатора) в самом начале скрипта и установив для файла выполнимый (executable) режим. " 2.2.5 Интерактивно запускаемые файлы Когда Вы используете интерпретатор Python интерактивно, часто удобно, чтобы некоторые стандартные команды выполнялись при каждом запуске интерпретатора. Это похоже на Этот файл читается только в случае интерактивного режима, а не когда Python читает команды из скрипта, или когда передан Если Вы хотите выполнения еще одного "подготовительного" файла, то это может быть запрограммировано в первичном "подготовительном" файле, например, 2.3 Редактирование интерактивного ввода и истории команд Некоторые версии Python поддерживают редактирование текущей вводимой строки и истории команд, подобно тому, как это делается в Korn shell и GNU Bash shell. Эта возможность реализована с использованием библиотеки GNU Readline, которая предоставляет Emacs-стиль и vi-стиль редактирования. Данная библиотека имеет свою собственную документацию, которую я не буду здесь дублировать; однако, основы легко объяснимы. Возможно наиболее быстрым способом проверки того, поддерживается ли редактирование командной строки, является нажатие Control-P в ответ на первое приглашение Python, которое Вы получите. Если прозвучит звуковой сигнал, то редактирование поддерживается. Если же ничего не произойдет, или на экране появится "^P", то Вы можете смело пропустить остаток этой секции. 2.3.1 Редактирование строки Если это вообще поддерживается, то редактирование строки ввода всегда активно после выдачи интерпретатором первичного или вторичного приглашения. Текущая строка может быть отредактирована с использованием обычных управляющих символов Emacs. Вот самые важные из них: C-A (Control-A) перемещает курсор на начало строки, C-E - конец, C-B - передвигает на одну позицию влево, C-F - вправо. Backspace удаляет символ слева от курсора, C-D - символ справа. C-K - стирает конец строки справа от курсора, C-Y - возвращает обратно последнюю стертую строку. C-подчеркивание - отменяет последнее действие, это можно повторить несколько раз, для получения суммарного эффекта. 2.3.2 История команд Все непустые введенные строки запоминаются в специальном буфере, и, когда выдается новое приглашение, текущая позиция находится в новой строке в конце буфера. C-P возвращает на одну строку в буфере назад, C-N - на строку вперед. Любая строка может быть отредактирована; для пометки строки как модифицированной, в начале приглашения появляется звездочка. Нажатие клавиши Return передает текущую строку интерпретатору. C-R включает поиск назад; C-S - поиск вперед. 2.3.3 Привязка клавиш Привязка клавиш и некоторые другие параметры библиотеки Readline могут быть установлены путем помещения необходимых команд в инициализирующий файл под названием
или
а установка опций:
Например: #Я предпочитаю vi-стиль редактирования: set editing-mode vi #Редактирование с использованием простой строки: set horizontal-scroll-mode On #Переназначить некоторые клавиши: Meta-h: backward-kill-word "\C-u": universal-argument "\C-x\C-r": re-read-unit-file Примечание: привязкой по умолчанию для клавиши TAB в Python является вставка символа табуляции вместо функции завершения имени файла, заданной в Readline по умолчанию. Но если Вы настаиваете, то можно это изменить добавив
в Ваш 2.3.4 Комментарий Все эти приспособления - громадный шаг вперед по сравнению с предыдущими версиями интерпретатора; однако, некоторые пожелания не были учтены: было бы хорошо, если абзацный отступ предлагался бы автоматически когда это необходимо (разборщик может определить когда требуется записывать следующий символ с отступом). Также были бы полезны команды для проверки (или даже автоматического предложения) закрывающих скобок, кавычек, т.д. [Назад][Содержание][Вперед] |
|
| ||||||||||||||||
|