Содержание страницы
2. Использование интерпретатора Python¶Using the Python Interpreter
2.1. Запуск интерпретатора¶Invoking the Interpreter
Интерпретатор Python обычно устанавливается в /usr/local/bin/python3.1 на тех машинах, где он доступен; добавив /usr/local/bin в путь поиска командной оболочки Unix, можно запустить его, набрав команду
python3.1
в командную строку оболочки. [1] Поскольку выбор каталога, в котором находится интерпретатор, является опцией установки, возможны и другие расположения; уточните у вашего местного гуру Python или системного администратора. (Например, /usr/local/python – популярная альтернатива.)
На компьютерах с Windows установка Python обычно размещается в C:\Python31, хотя вы можете изменить это при запуске установщика. Чтобы добавить этот каталог в свой путь, введите следующую команду в командную строку в окне DOS:
set path=%path%;C:\python31
Ввод символа конца файла (Control-D в Unix, Control-Z в Windows) в главном приглашении вызывает завершение работы интерпретатора с нулевым кодом возврата. Если это не сработает, можно выйти из интерпретатора, введя следующую команду: quit().
Возможности редактирования командной строки интерпретатора обычно не очень сложны. В Unix тот, кто установил интерпретатор, возможно, включил поддержку библиотеки GNU readline, которая добавляет более развитые возможности интерактивного редактирования и истории. Возможно, самый быстрый способ проверить, поддерживается ли редактирование командной строки, – нажать Control-P на первом приглашении Python. Если раздастся звуковой сигнал, редактирование командной строки поддерживается; см. Приложение Интерактивное редактирование ввода и подстановка истории для ознакомления с клавишами. Если ничего не происходит или если появляется ^P, редактирование командной строки недоступно; единственное, что можно сделать, – использовать backspace для удаления символов из текущей строки.
Интерпретатор работает примерно как оболочка Unix: при вызове со стандартным вводом, подключенным к tty-устройству, он читает и выполняет команды в интерактивном режиме; при вызове с аргументом – именем файла или с файлом в качестве стандартного ввода, он читает и выполняет скрипт из этого файла.
Второй способ запуска интерпретатора – python -c command [arg] ..., который выполняет инструкцию(и) из command, аналогично опции -c командной оболочки. Поскольку инструкции Python часто содержат пробелы и другие символы, значимые для оболочки, обычно рекомендуется заключать command целиком в одинарные кавычки.
Некоторые модули Python также полезны как скрипты. Их можно запускать с помощью python -m module [arg] ..., что выполняет исходный файл для module, как если бы его полное имя было введено в командной строке.
При использовании файла сценария иногда бывает полезно запустить сценарий и затем перейти в интерактивный режим. Это можно сделать, передав -i перед именем сценария. (Это не работает, если сценарий читается из стандартного ввода, по той же причине, что описана в предыдущем абзаце.)
2.1.1. Передача аргументов¶Argument Passing
Когда интерпретатору известны имя скрипта и последующие аргументы, они превращаются в список строк и назначаются переменной argv в модуле sys. Получить доступ к этому списку можно, выполнив import sys. Длина списка – не менее одного элемента; если не указаны ни скрипт, ни аргументы, sys.argv[0] является пустой строкой. Если имя скрипта задано как '-' (что означает стандартный ввод), sys.argv[0] устанавливается в '-'. При использовании -c command sys.argv[0] устанавливается в '-c'. При использовании -m module sys.argv[0] устанавливается в полное имя найденного модуля. Параметры, указанные после -c command или -m module, не обрабатываются интерпретатором Python, а остаются в sys.argv для обработки командой или модулем.
2.1.2. Интерактивный режим¶Interactive Mode
Когда команды читаются с tty, говорят, что интерпретатор находится в интерактивном режиме. В этом режиме он выводит приглашение для следующей команды с помощью основного приглашения, обычно три знака «больше» (>>>); для строк продолжения он выводит вторичное приглашение, по умолчанию три точки (...). Перед первым приглашением интерпретатор выводит приветственное сообщение с номером версии и уведомлением об авторских правах:
$ python3.1
Python 3.1 (py3k, Sep 12 2007, 12:21:02)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Строки продолжения требуются при вводе многострочных конструкций. В качестве примера рассмотрим инструкцию if:
>>> the_world_is_flat = 1
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!
2.2. Интерпретатор и его окружение¶The Interpreter and Its Environment
2.2.1. Обработка ошибок¶Error Handling
Когда возникает ошибка, интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме он затем возвращается к основному приглашению; если входные данные поступили из файла, он завершает работу с ненулевым кодом возврата после вывода трассировки стека. (Исключения, обрабатываемые предложением except в операторе try, в данном контексте не считаются ошибками.) Некоторые ошибки являются безусловно фатальными и приводят к завершению с ненулевым кодом; это относится к внутренним противоречиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд направляется в стандартный вывод.
Ввод символа прерывания (обычно Control-C или DEL) на основном или вторичном приглашении отменяет ввод и возвращает к основному приглашению. [2] Ввод прерывания во время выполнения команды вызывает исключение KeyboardInterrupt, которое может быть обработано оператором try.
2.2.2. Исполняемые сценарии Python¶Executable Python Scripts
В Unix-системах BSD-подобного типа сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, поместив строку
#! /usr/bin/env python3.1
(при условии, что интерпретатор находится в PATH пользователя) в начале сценария и что файлу предоставлено право на выполнение. Последовательность #! должна быть первыми двумя символами файла. На некоторых платформах эта первая строка должна заканчиваться переводом строки в стиле Unix ('\n'), а не в стиле Windows ('\r\n'). Обратите внимание, что символ решётки '#' используется в Python для начала комментария.
Сценарию можно задать исполняемый режим (права) с помощью команды chmod:
$ chmod +x myscript.py
В системах Windows нет понятия «исполняемый режим». Установщик Python автоматически связывает файлы .py с python.exe, так что двойной щелчок по файлу Python запускает его как скрипт. Расширение также может быть .pyw; в этом случае окно консоли, которое обычно появляется, подавляется.
2.2.3. Кодировка исходного кода¶Source Code Encoding
По умолчанию исходные файлы Python считаются закодированными в UTF-8. В этой кодировке символы большинства языков мира можно одновременно использовать в строковых литералах, идентификаторах и комментариях – хотя стандартная библиотека использует только символы ASCII для идентификаторов, это соглашение, которому должен следовать любой переносимый код. Чтобы правильно отображать все эти символы, редактор должен распознавать, что файл в UTF-8, и использовать шрифт, поддерживающий все символы файла.
Также можно указать другую кодировку для исходных файлов. Для того чтобы это сделать, поместите ещё одну специальную строку-комментарий сразу после строки #! для определения кодировки исходного файла:
# -*- coding: encoding -*-
После такого объявления всё содержимое исходного файла будет считаться имеющим кодировку encoding вместо UTF-8. Список возможных кодировок можно найти в справочнике по библиотеке Python, в разделе codecs.
Например, если редактор не поддерживает файлы в кодировке UTF-8 и требует использования другой кодировки, например Windows-1252, можно написать:
# -*- coding: cp-1252 -*-
и при этом использовать все символы набора Windows-1252 в исходных файлах. Специальный комментарий о кодировке должен находиться в первой или второй строке файла.
2.2.4. Интерактивный файл запуска¶The Interactive Startup File
При интерактивной работе с Python часто бывает удобно, чтобы некоторые стандартные команды выполнялись при каждом запуске интерпретатора. Для этого можно установить переменную окружения с именем PYTHONSTARTUP, указав имя файла, содержащего команды запуска. Это похоже на механизм .profile в оболочках Unix.
Этот файл читается только в интерактивных сеансах, а не когда Python читает команды из скрипта, и не когда /dev/tty задан в качестве явного источника команд (в остальном это ведёт себя как интерактивный сеанс). Он выполняется в том же пространстве имён, что и интерактивные команды, поэтому объекты, которые он определяет или импортирует, можно использовать без уточнения в интерактивном сеансе. Вы также можете изменить приглашения sys.ps1 и sys.ps2 в этом файле.
Если вы хотите загружать дополнительный файл запуска из текущего каталога, вы можете запрограммировать это в глобальном файле запуска с помощью кода вроде if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()). Если вы хотите использовать файл запуска в скрипте, это нужно сделать явно в самом скрипте:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
exec(open(filename).read())
Сноски
| [1] | В Unix интерпретатор Python 3.x по умолчанию не устанавливается с исполняемым файлом с именем python, чтобы не возникало конфликта с одновременно установленным исполняемым файлом Python 2.x. |
| [2] | Проблема с пакетом GNU Readline может помешать этому. |