Анимация
JavaScript
|
Главная Библионтека 10.2 Выражения Выражения состоят из атомов ("неделимых" частей), объединенных различными операторами. Описание операторов разделено на несколько подразделов, расположенных в порядке убывания приоритета описанных в них операторов (в конце этого раздела приведена сводная таблица приоритетов). Перед применением бинарных операторов операнды приводятся к общему типу по правилам, описанным в разделе 11.6.3. Назначение большинства операторов зависит от типа операндов и описано в соответствующих разделах главы 11. s = l[:i] + l[i+1:] p = perm(s) for x in p: r.append(l[i:i+1] + x) return r А следующий пример показывает возможные ошибки в отступах: # ошибка: отступ в первой строке def perm(l): # ошибка: нет отступа for i in range(len(l)): s = l[:i] + l[i+1:] # ошибка: неожиданный отступ p = perm(l[:i] + for x in p: r.append(l[i:i+1] + x) # ошибка: при уменьшении отступа должна существовать # строка с точно таким же отступом return r Общепринято добавлять четыре пробела для каждого следующего уровня отступа. Использование символов табуляции не желательно, так как их интерпретация зависит от используемого редактора и его настроек. Большинство редакторов позволяют настроить автоматическую поддержку отступов. Если Вы работаете с редактором vim, достаточно добавить строчку autocmd FileType python set softtabstop=4 shiftwidth=4 expandtab autoindent в конфигурационный файл редактора .vimrc ( vimrc под Windows). Символ подачи страницы (FF) может присутствовать в начале строки и игнорируется при определении отступа. В других местах отступа символ подачи страницы может давать неопределенный эффект (например, обнулить счетчик пробелов). За исключением начала логической строки и строковых литералов, символы пробела, табуляции и подачи страницы могут быть взаимозаменяемо использованы для разделения лексем. 10.2.1 Атомы Идентификаторы Идентификаторы являются ссылками на локальные, глобальные или встроенные имена. Если к идентификатору привязан объект в текущем блоке кода и в этом блоке не было явно указано с помощью инструкции global , что имя является глобальным, то идентификатор ссылается на локальное имя для этого блока. Если идентификатору в текущем блоке кода не был привязан объект, идентификатор ссылается на глобальное (если оно существует) или встроенное имя. Если же идентификатор явно указан в инструкции global в текущем блоке кода, то он всегда ссылается на глобальное имя. Если к идентификатору привязан объект, его вычисление как атома в выражении дает этот объект. При попытке использования в выражении имени, не привязанного к объекту, будет сгенерировано исключение NameError. Идентификаторы (имена) должны начинаться с буквы латинского алфавита или символа подчеркивания и содержать только буквы латинского алфавита, цифры и символы подчеркивания. Интерпретатор языка Python различает регистры букв: идентификаторы, например, spam и Spam считаются разными. Длина идентификаторов не ограничена. Следующие идентификаторы являются зарезервированными (или ключевыми) словами языка и не могут быть использованы как обычные имена: assert break class continue del elif else except exec finally from global import in lambda pass print raise return try while Помимо ключевых слов, некоторые идентификаторы имеют специальное значение (символ * обозначает "любое количество любых допустимых символов"; имена относятся к следующему классу, только если они не относятся к предыдущему): Системные имена (особых модулей, специальных атрибутов и методов). * (только в определении класса) Если идентификатор такого вида встречается в определении класса, то он считается частным атрибутом класса и подвергается специальному преобразованию. Например, имя spam, определенное в классе с именем Ham, преобразуется к Ham spam. Преобразование производится независимо от контекста, в котором идентификатор используется. Если имя класса состоит только из символов подчеркивания, преобразование не производится. Частные объекты модуля, не импортируются инструкцией from module import *. В интерактивном режиме идентификатор с именем используется для хранения результата вычисления последней инструкции-выражения, сохраняется в пространстве встроенных имен. Не в интерактивном режиме имя не имеет специального значения (часто используется для выбора сообщений в соответствии с текущими национальными установками). Литеральные выражения Литеральные выражения являются записью значений некоторых встроенных типов: чисел различного типа (см. раздел 11.1), обычных строк (раздел 11.2.1) и строк Unicode (раздел 11.2.2). "Замкнутые" выражения Формы, заключенные в обратные кавычки и различные скобки также распознаются синтаксическим анализатором как атомы. Круглые скобки представляют содержащееся в нем выражение и используются для контроля порядка вычисления. Обратите внимание, что кортеж (см. раздел 11.2.3) образуется не с помощью круглых скобок, а путем перечисления выражений через запятую. Скобки необходимы только для образования пустого кортежа, а также в тех случаях, когда перечисление через запятую используется синтаксисом для других целей (список аргументов функции или инструкции). Квадратные и фигурные скобки используются для представления списков и словарей соответственно (см. разделы 11.2.6 и 11.3). Обратные кавычки используются для получения строкового представления объекта, являющегося результатом вычисления заключенного в них выражения. Тот же результат Вы можете получить, используя встроенную функцию repr() . Смотрите также описание функции repr() (раздел 12) и специального метода repr () (раздел 11.6.3). 10.2.2 Первичные выражения Первичное выражение может быть атомом или выражением, представляющим применение к первичному выражению (primary) следующих операций, имеющих наибольший приоритет: primary.attr Операция получения атрибута. Первичное выражение primary должно представ- 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 |