Интерпретатор и его среда
Обработка ошибок
🕛 11.07.2009, 13:08
При возникновении ошибки интерпретатор печатает сообщение и остаток содержимого стека. В интерактивном режиме, после этого снова выдается первичное приглашение. Если программа читается из файла, интерпретатор печатает сообщение об ошибке, остаток содержимого стека и выходит с ненулевым кодом завершения. (Исключения, перехваченные ветвью except в инструкции try, не являются ошибками в данном контексте.) Некоторые ошибки - внутренние противоречия и некоторые случаи нехватки памяти - являются безусловно фатальными и приводят к выходу с ненулевым значением. Все сообщения об ошибках выводятся в стандартный поток ошибок; нормальные сообщения, возникающие в процессе выполнения команд, направляются в стандартный поток вывода.Нажатие прерывающей комбинации клавиш (обычно Ctrl-C) во время выполнения генерирует исключение KeyboardInterrupt, которое может быть обработано с помощью инструкции try.
Исполняемые файлы
В операционных системах UNIX программу на языке Python можно сделать исполняемой непосредственно, поместив, например, строку
#!/usr/bin/env python
(подразумевая, что путь к интерпретатору включен в переменную окружения PATH пользователя) и установив разрешение на исполнение. Символы '#!' должны быть первыми двумя символами файла. Заметьте, что символ '#' в языке Python используется для обозначения комментария.
Инициализация при запуске в интерактивном режиме
Если Вы используете Python интерактивно, часто удобно иметь стандартный набор команд, исполняемых при каждом запуске интерпретатора. Для этого нужно присвоить переменной окружения PYTHONSTARTUP имя файла, содержащего команды инициализации (аналогично '.profile' для UNIX shell).
Указанный файл читается только в интерактивном режиме и не используется, если команды читаются из файла, через конвейер или если терминал явно указан в качестве источника. Инициализационный файл исполняется в том же пространстве имен, что и интерактивные команды, то есть определенные в нем объекты и импортированные модули могут быть использованы далее без каких-либо ограничений. В этом файле Вы также можете переопределить первичное (sys.ps1) и вторичное (sys.ps2) приглашения.
Если Вы хотите считывать дополнительно инициализационный файл из текущего каталога, следует включить соответствующие инструкции в глобальный инициализационный файл, например:
if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')
Если необходимо использовать инициализационный файл в программе, Вы должны указать это явно:
import os filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): execfile(filename)