Документация Python неофициальный перевод
Содержание страницы

2. Использование интерпретатора PythonUsing the Python Interpreter

2.1. Запуск интерпретатораInvoking the Interpreter

Обычно интерпретатор Python устанавливается по адресу /usr/local/bin/python3.2 на тех машинах, где он доступен; добавление /usr/local/bin в путь поиска вашей оболочки Unix позволяет запустить его, набрав команду:

python3.2

в командную строку оболочки. [1] Поскольку выбор каталога, в котором находится интерпретатор, является опцией установки, возможны и другие расположения; уточните у вашего местного гуру Python или системного администратора. (Например, /usr/local/python – популярная альтернатива.)

На компьютерах с Windows установка Python обычно производится в C:\Python32, хотя вы можете изменить это при запуске установщика. Чтобы добавить этот каталог в ваш путь, вы можете ввести следующую команду в командной строке (в окне DOS):

set path=%path%;C:\python32

Ввод символа конца файла (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.2
Python 3.2.3 (default, May  3 2012, 15:54:42)
[GCC 4.6.3] 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. Исполняемые сценарии PythonExecutable Python Scripts

В Unix-системах BSD-подобного типа сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, поместив строку

#! /usr/bin/env python3.2

(предполагая, что интерпретатор находится в 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())

2.2.5. Модули настройкиThe Customization Modules

Python предоставляет две точки подключения для настройки: sitecustomize и usercustomize. Чтобы увидеть, как это работает, сначала нужно найти расположение вашего каталога site-packages для пользователя. Запустите Python и выполните следующий код:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.2/site-packages'

Теперь вы можете создать файл с именем usercustomize.py в этом каталоге и поместить туда всё, что захотите. Этот файл будет влиять на каждый запуск Python, если только он не запущен с опцией -s, отключающей автоматический импорт.

sitecustomize работает аналогично, но обычно создаётся администратором компьютера в глобальном каталоге site-packages и импортируется до usercustomize. Подробнее см. документацию модуля site.

Сноски

[1]В Unix интерпретатор Python 3.x по умолчанию не устанавливается с исполняемым файлом с именем python, чтобы не возникало конфликта с одновременно установленным исполняемым файлом Python 2.x.
[2]Проблема с пакетом GNU Readline может помешать этому.