Содержание страницы
Использование интерпретатора Python¶Using the Python Interpreter
Запуск интерпретатора¶Invoking the Interpreter
Интерпретатор Python обычно устанавливается в /usr/local/bin/python3.0 на тех машинах, где он доступен; если добавить /usr/local/bin в путь поиска оболочки Unix, его можно запустить, набрав команду
python3.0
в командную строку оболочки. [1] Поскольку выбор каталога, в котором находится интерпретатор, является опцией установки, возможны и другие расположения; уточните у вашего местного гуру Python или системного администратора. (Например, /usr/local/python – популярная альтернатива.)
На машинах с Windows установка Python обычно происходит в C:\Python30, хотя при запуске установщика это можно изменить. Чтобы добавить этот каталог в переменную PATH, введите следующую команду в командной строке DOS-окна:
set path=%path%;C:\python30
Ввод символа конца файла (Control-D в Unix, Control-Z в Windows) в основном приглашении приводит к выходу из интерпретатора с нулевым кодом возврата. Если это не сработает, можно выйти из интерпретатора, набрав следующие команды: import sys; sys.exit().
Возможности редактирования командной строки интерпретатора обычно не очень сложны. В Unix тот, кто установил интерпретатор, возможно, включил поддержку библиотеки GNU readline, которая добавляет более развитые возможности интерактивного редактирования и истории. Возможно, самый быстрый способ проверить, поддерживается ли редактирование командной строки, – нажать Control-P на первом приглашении Python. Если раздастся звуковой сигнал, редактирование командной строки поддерживается; см. Приложение Интерактивное редактирование ввода и подстановка истории для ознакомления с клавишами. Если ничего не происходит или если появляется ^P, редактирование командной строки недоступно; единственное, что можно сделать, – использовать backspace для удаления символов из текущей строки.
Интерпретатор работает примерно как оболочка Unix: при вызове со стандартным вводом, подключенным к tty-устройству, он читает и выполняет команды в интерактивном режиме; при вызове с аргументом – именем файла или с файлом в качестве стандартного ввода, он читает и выполняет скрипт из этого файла.
Второй способ запуска интерпретатора – python -c command [arg] ..., который выполняет инструкцию(и) из command, аналогично опции -c командной оболочки. Поскольку инструкции Python часто содержат пробелы и другие символы, значимые для оболочки, обычно рекомендуется заключать command целиком в одинарные кавычки.
Некоторые модули Python также полезны как скрипты. Их можно запускать с помощью python -m module [arg] ..., что выполняет исходный файл для module, как если бы его полное имя было введено в командной строке.
Обратите внимание на разницу между python file и python <file. Во втором случае запросы на ввод от программы, например вызов sys.stdin.read(), удовлетворяются из file. Поскольку этот файл уже был прочитан парсером до конца перед началом выполнения программы, программа сразу же обнаружит конец файла. В первом случае (который обычно и нужен) они удовлетворяются из того файла или устройства, которое подключено к стандартному вводу интерпретатора Python.
При использовании файла сценария иногда бывает полезно запустить сценарий и затем перейти в интерактивный режим. Это можно сделать, передав -i перед именем сценария. (Это не работает, если сценарий читается из стандартного ввода, по той же причине, что описана в предыдущем абзаце.)
Передача аргументов¶Argument Passing
Когда интерпретатору известен скрипт, имя скрипта и последующие дополнительные аргументы передаются скрипту в переменной sys.argv, которая представляет собой список строк. Его длина не менее одного; если скрипт и аргументы не заданы, sys.argv[0] является пустой строкой. Когда имя скрипта задано как '-' (означает стандартный ввод), sys.argv[0] устанавливается в '-'. Когда используется -c command, sys.argv[0] устанавливается в '-c'. Когда используется -m module, sys.argv[0] устанавливается в полное имя найденного модуля. Опции, обнаруженные после -c command или -m module, не обрабатываются интерпретатором Python, а остаются в sys.argv для обработки командой или модулем.
Интерактивный режим¶Interactive Mode
Когда команды читаются с tty, говорят, что интерпретатор находится в интерактивном режиме. В этом режиме он выводит приглашение для следующей команды с помощью основного приглашения, обычно три знака «больше» (>>>); для строк продолжения он выводит вторичное приглашение, по умолчанию три точки (...). Перед первым приглашением интерпретатор выводит приветственное сообщение с номером версии и уведомлением об авторских правах:
$ python3.0
Python 3.0a1 (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!
Интерпретатор и его окружение¶The Interpreter and Its Environment
Обработка ошибок¶Error Handling
Когда возникает ошибка, интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме он затем возвращается к основному приглашению; если входные данные поступили из файла, он завершает работу с ненулевым кодом возврата после вывода трассировки стека. (Исключения, обрабатываемые предложением except в операторе try, в данном контексте не считаются ошибками.) Некоторые ошибки являются безусловно фатальными и приводят к завершению с ненулевым кодом; это относится к внутренним противоречиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд направляется в стандартный вывод.
Ввод символа прерывания (обычно Control-C или DEL) на основном или вторичном приглашении отменяет ввод и возвращает к основному приглашению. [2] Ввод прерывания во время выполнения команды вызывает исключение KeyboardInterrupt, которое может быть обработано оператором try.
Исполняемые скрипты Python¶Executable Python Scripts
В Unix-системах BSD-подобного типа сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, поместив строку
#! /usr/bin/env python3.0
(при условии, что интерпретатор находится в PATH пользователя) в начале сценария и что файлу предоставлено право на выполнение. Последовательность #! должна быть первыми двумя символами файла. На некоторых платформах эта первая строка должна заканчиваться переводом строки в стиле Unix ('\n'), а не в стиле Windows ('\r\n'). Обратите внимание, что символ решётки '#' используется в Python для начала комментария.
Сценарию можно задать исполняемый режим (права) с помощью команды chmod:
$ chmod +x myscript.py
В системах Windows нет понятия «исполняемый режим». Установщик Python автоматически связывает файлы .py с python.exe, так что двойной щелчок по файлу Python запускает его как скрипт. Расширение также может быть .pyw; в этом случае окно консоли, которое обычно появляется, подавляется.
Кодировка исходного кода¶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 в исходных файлах. Специальный комментарий о кодировке должен находиться в первой или второй строке файла.
Файл интерактивного запуска¶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 интерпретатор версии 3.0 по умолчанию не устанавливается с исполняемым файлом с именем python, чтобы не возникало конфликтов с одновременно установленным исполняемым файлом Python 2.x. |
| [2] | Проблема с пакетом GNU Readline может помешать этому. |