Анимация
JavaScript
|
Главная Библионтека 10.3.6 Инструкция break Инструкция break может быть использована только (синтаксически) внутри циклов for и while, но не в определении функции или класса, находящегося в цикле. Прерывает выполнение самого вложенного цикла (пропуская ветвь else цикла, если она присутствует). При прерывании цикла for переменная (или переменные), в которой хранится значение текущего элемента, остается неизменной. Если для выхода из цикла необходимо покинуть блок инструкции try с ветвью finally, перед выходом выполняется ветвь finally. 10.3.7 Инструкция continue Инструкция continue может быть использована только (синтаксически) внутри циклов for и while, но не в определении функции или класса, находящегося в цикле. В текущих версиях инструкция continue также не может быть использована внутри основного блока инструкции try (расположенного синтаксически внутри цикла) - только в ветвях except и else2. Инструкция продолжает выполнение наиболее вложенного цикла со следующего прохода. 2Это ограничение, возможно, будет снято в будущих версиях языка. струкция содержит только ключевое слово print. В качестве стандартного потока вывода используется файловый объект, на который ссылается переменная stdout в модуле sys. Если имя sys.stdout было удалено, генерируется исключение RuntimeError. Начиная с версии 2.0, инструкция print может быть использована для вывода в любой файл. Для этого после ключевого слова print необходимо поставить >> и первое выражение в списке expr list должно давать файловый объект или None (в этом случае для вывода будет использоваться sys.stdout). Например: print >> sys.stderr, Ошибочка вышла! Инструкция print предъявляет следующие требования к файловому объекту, в который производится вывод: объект должен иметь метод write() и доступный для записи атрибут softspace (последнее всегда верно для экземпляров классов, не имеющих специальных методов getattr () и setattr () ). 10.3.9 Инструкция global Инструкция global identifier list указывает на то, что идентификаторы identifier list (список через запятую идентификаторов) во всем текущем блоке ссылаются на глобальные переменные. В то время как использование в выражениях глобальных имен производится автоматически, если они не определены (нигде в текущем блоке) в локальном пространстве имен, присваивание глобальным именам без использования инструкции global невозможно. Если имена где-либо в данном блоке кода указаны в инструкции global , их следует использовать только после этой инструкции. Такие имена не должны использоваться как формальные параметры циклов for, определений классов и функций и не должны быть среди имен, импортируемых инструкцией import. В текущих версиях инструкции for, class и def изменяют глобальную переменную, а инструкция import не импортирует такие имена, однако в будущих версиях поведение может измениться. Инструкция global является директивой синтаксическому анализатору команд и применяется только к единовременно компилируемому блоку кода. В частности, инструкция global , содержащаяся в инструкции exec не оказывает влияния на блок кода, в котором содержится эта инструкция exec . И наоборот, инструкция global в блоке кода, содержащем также инструкцию exec , не оказывает влияние на код в этой инструкции exec . То же самое верно и для встроенных функций eval() , execfile() и compile() . 10.3.10 Инструкция import Существует три формы записи инструкции import: import module list Импортирует указанные модули. module list - список через запятую полных имен модулей (если модуль находится в пакете - используется запись через точку, например, пакет. подпакет. модуль) с возможным указанием имен, к которым будут привязаны объекты-модули в локальном пространстве имен (см. ниже). 10.3.8 Инструкция return Инструкция return [expression] (может быть использована синтаксически только в определении функции) прерывает выполнение функции (при ее вызове) используя значение выражения expression (None, если выражение опущено) в качестве возвращаемого функцией значения. Если для возврата из функции необходимо покинуть блок инструкции try с ветвью finally, перед возвратом выполняется ветвь finally. from module import obj list Импортирует объекты из модуля module. obj list - список через запятую идентификаторов объектов (идентификатор объекта может ссылаться, в том числе, и на объект-модуль, но, в отличие от имени модуля, не может использовать запись через точку) с возможным указанием имен, к которым будут привязаны объекты в локальном пространстве имен (см. ниже). from module import * Импортирует все имена из модуля module, кроме имен, начинающихся с символа подчеркивания. Инструкция import выполняется в два этапа: 1. Интерпретатор находит модуль (или модули) и, если это необходимо, инициализирует его. 2. Связывает имена в текущем локальном пространстве имен с объектами-модулями (первая форма записи инструкции) или объектами, на которые ссылаются соответствующие имена в модуле. Начиная с версии 2.0, Вы имеете возможность указать имя, к которому будет привязан объект в локальном пространстве имен, используя запись object as local name в списке модулей (module list) или объектов (obj list). Так, например, инструкция import operator привязывает импортированный объект-модуль к локальному имени operator, в то время как import operator as op привязывает тот же объект-модуль к локальному имени op. Во избежание недоразумений не допускается импортирование под другим именем объектов, для которых используется точечная запись: вместо import xml.sax as s необходимо использовать запись from xml import sax as s . Под инициализацией модуля, реализованного на языке Python, подразумевается создание пустого объекта-модуля, добавление его в таблицу sys.modules и выполнение в контексте этого модуля инструкций из файла modu/e.py (или init .py в каталоге module, если модуль является пакетом). Точнее, выполняется его байт-компилированная версия - файл module.pyc или module.pyo в зависимости от того, используется оптимизация или нет. Если соответствующий байт-компилированный файл отсутствует или не соответствует исходному .py -файлу, интерпретатор компилирует исходный файл (если он содержит синтаксические ошибки, генерируется исключение SyntaxError и объект-модуль в sys.modules не добавляется), пытается записать байт-компилированную версию и выполняет его (независимо от успешности записи байт-компилированной версии). Не перехваченные исключения во время инициализации прерывают процесс импортирования модуля. Однако частично инициализированный модуль остается в таблице sys.modules. Инициализация динамически подгружаемого или встроенного в интерпретатор модуля выполняется путем вызова функции initmodule. Система запоминает модули, которые были инициализированы в словаре (индексированном именами модулей) sys.modules. При импортировании, если имя модуля найдено в sys.modules, его инициализация пропускается. Если Вы хотите заново 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 |