?
Анимация
JavaScript
|
Главная Библионтека 2.1.2 Интерактивный режим Когда команды считываются с терминала, говорят, что интерпретатор находится в интерактивном режиме. В этом режиме для ввода последующих команд выводится первичное приглашение, обычно три знака больше (>>> ); для продолжения ввода незаконченных инструкций выводится вторичное приглашение, по умолчанию - три точки (... ). При запуске в интерактивном режиме интерпретатор выводит приветственное сообщение - номер версии и замечания об авторском праве - перед выводом первичного приглашения, например: $ python Python 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)] on Win32 Type "copyright", "credits" or "license" for more information. >>> Продолжение ввода незаконченных инструкций необходимо при вводе многострочных конструкций. В качестве примера, взгляните на инструкцию if: >>> the world is flat = 1 >>> # Если земля плоская, вывести предупреждение ... if the world is flat: ... print "Осторожно, не свалитесь!" Осторожно, не свалитесь! 2.1.1 Передача аргументов Имя исполняемого файла (программы) и дополнительные аргументы передаются программе в переменной sys.argv, которая является списком строк. Его длина (количество элементов в списке) всегда больше или равна единице. Имя программы хранится в sys.argv[0]. В интерактивном режиме sys.argv[0] содержит пустую строку. Если же имя программы передано как - (имея в виду стандартный ввод) или интерпретатор запущен с опцией -c, то значение sys.argv[0] устанавливается в - и -c соответственно. Все, что указывается после -c command не воспринимается как опции интерпретатором Python, а передается в sys.argv для обработки инструкциями в command. 2.2 Интерпретатор и его среда 2.2.1 Обработка ошибок При возникновении ошибки интерпретатор печатает сообщение и остаток содержимого стека. В интерактивном режиме, после этого снова выдается первичное приглашение. Если программа читается из файла, интерпретатор печатает сообщение об ошибке, остаток содержимого стека и выходит с ненулевым кодом завершения. (Исключения, перехваченные ветвью except в инструкции try, не являются ошибками в данном контексте.) Некоторые ошибки - внутренние противоречия и некоторые случаи нехватки памяти - являются безусловно фатальными и приводят к выходу с ненулевым значением. Все сообщения об ошибках выводятся в стандартный поток ошибок; нормальные сообщения, возникающие в процессе выполнения команд, направляются в стандартный поток вывода. Нажатие прерывающей комбинации клавиш (обычно Ctrl-C) во время выполнения генерирует исключение KeyboardInterrupt, которое может быть обработано с помощью инструкции try. 2.2.2 Исполняемые файлы В операционных системах UNIX программу на языке Python можно сделать исполняемой непосредственно, поместив, например, строку #!/usr/bin/env python (подразумевая, что путь к интерпретатору включен в переменную окружения PATH пользователя) и установив разрешение на исполнение. Символы #! должны быть первыми двумя символами файла. Заметьте, что символ # в языке Python используется для обозначения комментария. 2.2.3 Инициализация при запуске в интерактивном режиме Если Вы используете 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) Если Вы хотите считывать дополнительно инициализационный файл из текущего каталога, следует включить соответствующие инструкции в глобальный инициализаци-онный файл, например: 0 [ 1 ] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |