16. Приложение

16.1. Интерактивный режим

Существует два варианта интерактивного REPL. Классический базовый интерпретатор поддерживается на всех платформах с минимальными возможностями управления строками.

В Unix-подобных системах (например, Linux или macOS) с поддержкой curses и readline по умолчанию используется новая интерактивная оболочка. Она поддерживает цвет, многострочное редактирование, просмотр истории и режим вставки. Чтобы отключить цвет, смотрите Управление цветом. Функциональные клавиши предоставляют некоторые дополнительные возможности. F1 вызывает интерактивный браузер справки pydoc. F2 позволяет просматривать историю командной строки без вывода подсказок >>> и . F3 входит в «режим вставки», который облегчает вставку больших блоков кода. Нажмите F3, чтобы вернуться к обычному приглашению.

При использовании новой интерактивной оболочки выйдите из нее, набрав exit или quit. Добавление вызывающих скобок после этих команд не требуется.

Если новая интерактивная оболочка не нужна, ее можно отключить с помощью переменной окружения PYTHON_BASIC_REPL.

16.1.1. Обработка ошибок

При возникновении ошибки интерпретатор печатает сообщение об ошибке и трассировку стека. В интерактивном режиме он возвращается к первичной подсказке; если ввод осуществляется из файла, то после печати трассировки стека он завершается с ненулевым статусом выхода. (Исключения, обработанные предложением except в операторе try, не являются ошибками в данном контексте). Некоторые ошибки являются безусловно фатальными и вызывают выход с ненулевым статусом выхода; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод от выполненных команд записывается в стандартный вывод.

Ввод символа прерывания (обычно Control-C или Delete) в первичный или вторичный запрос отменяет ввод и возвращает в первичный запрос. [1] Ввод прерывания во время выполнения команды вызывает исключение KeyboardInterrupt, которое может быть обработано оператором try.

16.1.2. Исполняемые сценарии Python

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

#!/usr/bin/env python3

(предполагается, что интерпретатор находится на PATH пользователя) в начале сценария и придания файлу исполняемого режима. Строка #! должна быть первыми двумя символами файла. На некоторых платформах первая строка должна заканчиваться окончанием строки в стиле Unix ('\n'), а не в стиле Windows ('\r\n'). Обратите внимание, что для начала комментария в Python используется символ хэша, или фунта, '#'.

Сценарию можно присвоить исполняемый режим, или разрешение, с помощью команды chmod.

$ chmod +x myscript.py

В системах Windows не существует понятия «исполняемый режим». Программа установки Python автоматически ассоциирует файлы .py с python.exe, так что двойной щелчок на файле Python запустит его как скрипт. Расширение также может быть .pyw, в этом случае консольное окно, которое обычно появляется, подавляется.

16.1.3. Интерактивный файл запуска

При интерактивном использовании 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):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. Модули настройки

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

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

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

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

Сноски