The Python Language Reference / Справочник по языку Python: 5. Expressions
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
5. Выражения Hittih 12.07.10 в 22:04 |
|
|
Этот раздел разъясняет значение элементов выражений на Питоне. Hittih 12.07.10 в 22:07 |
||
|
Замечание о синтаксисе: Hittih 12.07.10 в 22:21 |
||
|
name ::= othername Hittih 12.07.10 в 22:21 |
||
|
и не даётся дальнейшей расшифровки, то такая формулировка подразумевает, что "name" значит то же, что и "othername" . Hittih 01.08.10 в 09:01 |
||
|
- Hittih 22.04.11 в 12:12 |
||
|
5.1. Арифметические преобразования Hittih 22.04.11 в 12:06 |
||
|
Когда далее в описании арифметического оператора используется фраза "числовые аргументы преобразуются к общему типу" - это значит, что реализация операторов для встроенных типов работает следующим образом: Hittih 22.04.11 в 12:06 |
||
|
Если любой из аргументов является комплексным числом, то другое преобразуется к комплексному; Hittih 22.04.11 в 12:05 |
||
|
иначе, если любой из аргументов является дробным числом, то другое преобразуется к дробному; Hittih 22.04.11 в 12:01 |
||
|
если же оба целые, то никакого преобразования не требуется. Hittih 22.04.11 в 12:01 |
||
|
К некоторым операторам применяются дополнительные правила (...) . Расширения должны определять свю собственную логику преобразований. Hittih 22.04.11 в 12:00 |
||
|
5.2. Атомы Hittih 22.04.11 в 11:59 |
||
|
Атомы являются самыми базовыми элементами выражений. Простейшими атомами являются идентификаторы и непосредственная запись данных ("литералы") . Формации заключённые в круглые, квадратные или фигурные скобки - тоже синтаксически относятся к атомам. Синтаксис атомов : Hittih 22.04.11 в 11:59 |
||
|
<code>atom ::= identifier | literal | enclosure Hittih 22.04.11 в 11:54 |
||
|
5.2.1. Идентификаторы (имена) Hittih 22.04.11 в 11:58 |
||
|
Идентификатор в роли атома является именем. Смотрите лексическое определение в разделе "Идентификаторы и ключевые слова" , а также документацию по именованию и связыванию в разделе "Именование и связывание" . Hittih 22.04.11 в 11:49 |
||
|
Когда данное имя назначено обьекту - интерпретация этого атома даёт этот обьект. Когда имя не назначено чему-либо - попытка интерпретировать его вызывает исключение "NameError" . Hittih 22.04.11 в 11:49 |
||
|
Модифицирование частных (локальных) имён : Когда идентификатор, встретившийся в тексте определения класса, начинается с двух или более символов подчёркивания и не оканчивается двумя или более символами подчёркивания – он считается частным именем данного класса. Частные имена заменяются на их длинную форму при генерации соответствующего кода. Эти длинные формы образуются добавлением в начале имени класса, у которого удаляются все подчёркивания в начале и ставится одно подчёркивание. Например : идентификатор «__spam» в классе «Ham» будет преобразован в «_Ham__spam» . Это преобразование не зависит от синтаксического контекста, в котором идентификатор был использован. Следует помнить, что в некоторых реализациях Питона может происходить обрезание имён, больших определённой длинны. Имена, состоящие только из подчёркиваний – не модифицируются. Hittih 22.04.11 в 11:47 |
||
|
5.2.2. Константы ("литералы") Hittih 22.04.11 в 11:46 |
||
|
Питон поддерживает явную запись значений (константы) для текстов, байтов и различных типов чисел : Hittih 22.04.11 в 11:46 |
||
|
<code>literal ::= stringliteral | bytesliteral Hittih 22.04.11 в 11:40 |
||
|
Интерпретирование явной записи даёт в результате объект соответствующего типа (текст, байты, целое, с плавающей запятой, комплексное числа) с данным значением. В случае констант дробных и комплексных чисел значение может быть установлено приблизительно. Hittih 22.04.11 в 11:44 |
||
|
За исключением байтов – все они, по сути, соответствуют неизменяемым типам данных, и поэтому контроль идентичности такого объекта менее важен, чем значение объекта. Многократные упоминания явных записей с одинаковым значением (будь то многократный проход одного места программы или в разных местах) могут получать как тот же объект так и другой объект с таким же значением. Hittih 22.04.11 в 11:32 |
||
|
5.2.3. Формы в скобках Hittih 22.04.11 в 11:33 |
||
|
Формы в скобках – это необязательный список выражений, заключённый в скобки : Hittih 22.04.11 в 11:33 |
||
|
<code>parenth_form ::= "(" [expression_list] ")"</code> Hittih 22.04.11 в 11:30 |
||
|
Если в скобках перечисляются выражения через запятую, (в том числе единственное выражение с запятой после него, после которой идёт только закрывающая скобка) – результатом будет кортеж из вычисленных значений этих выражений. Если в скобках содержится единственное выражение без запятой – результатом будет просто вычисленное значение этого выражения. Hittih 10.12.12 в 10:25 Список выражений, заключённый в скобки даёт в результате список значений этих выражений – но: если этот список содержит хотябы одну запятую, то образуется кортеж; иначе результатом будет значение единственного выражения списка. Hittih 10.12.12 в 10:52 |
||
|
Пустая пара кавычек даёт объект пустого кортежа. Поскольку кортежи являются неизменяемыми, то к ним применяются правила для констант (тоесть, два упоминания пустых кортежей могут получать как тот же объект так и другой объект с таким же значением) . Hittih 22.04.11 в 11:35 |
||
|
Заметьте, что кортежи образуются не скобками, а использованием оператора запятая. Исключением является пустой кортеж, для которого пустые скобки обязательны (без которых могли бы возникать неоднозначности, и опечатки могли бы оставаться незамеченными) . Hittih 22.04.11 в 11:36 |
||
|
5.2.4. Отображения для списков, наборов и словарей Hittih 22.04.11 в 11:37 |
||
|
Для создания списков, наборов и словарей Питон предоставляет специальный синтаксис, называемый отображения “displays” , для каждого в двух вариантах : Hittih 22.04.11 в 11:25 |
||
|
либо их содержимое перечисляется явно, либо Hittih 22.04.11 в 11:24 |
||
|
они вычисляются с помощью набора циклических и фильтрующих инструкций, что называется «сборка (списка)» («генерация (списка)» , «компоновка (списка)» , «(list) comprehension») . Hittih 22.04.11 в 11:23 |
||
|
Общий синтаксис сборок : Hittih 22.04.11 в 11:23 |
||
|
<code>comprehension ::= expression comp_for Hittih 22.04.11 в 11:15 |
||
|
«Компоновка» состоит из одного выражения, после которого идёт минимум одно ключевое слово «for» после которого могут быть в любом количестве ключевые слова «for» или «if» . В случае, если таковые присутствуют, содержимое группы очередного из них – это то, что получается, если считать каждую группу «for» или «if» блоком, вложенным по отношению к тому, что левее, и интерпретировать это выражение, получая очередной элемент каждый раз, дойдя до самого внутреннего блока. Hittih 22.04.11 в 11:22 |
||
|
Заметьте, что «компоновки» исполняются в отдельной области, поэтому имена, которым были назначения в списке приёмников, не «просачиваются» во внешнюю область. Hittih 22.04.11 в 11:20 |
||
|
5.2.5. Отображение списков Hittih 22.04.11 в 11:20 5.2.5. Отображение (запись, формулировка) списков Hittih 24.05.11 в 10:35 |
||
|
Отображение списка – это последовательность выражений (может быть пустая), заключённая в квадратные скобки : Hittih 22.04.11 в 11:19 |
||
|
<code>list_display ::= "[" [expression_list | comprehension] "]"</code> Hittih 22.04.11 в 11:09 |
||
|
Запись списка даёт в результате объект-список, содержание которого определено или перечислением выражений, или конструкцией генерации (компонования) списка (“comprehension”) . В первом варианте, когда дан список выражений, разделённых запятой – его элементы интерпретируются слева направо – и помещаются в объект-список в том же порядке. Во втором варианте, когда дана конструкция компоновки списка – список составляется из элементов, генерируемых этой конструкцией. Hittih 24.05.11 в 11:26 |
||
|
5.2.6. Отображение (запись, формулировка) множеств Hittih 24.05.11 в 11:31 |
||
|
Запись множества обозначается фигурными скобками, и признаком, отличающим его от словаря, является отсутствие двоеточий – разделителей ключей и значений : Hittih 24.05.11 в 11:41 |
||
|
<code>set_display ::= "{" (expression_list | comprehension) "}"</code> Hittih 22.04.11 в 11:07 |
||
|
Запись множества даёт в результате изменяемый объект-множество, содержание которого определено или перечислением выражений, или конструкцией генерации (компонования) списков (“comprehension”) . В первом варианте, когда дан список выражений, разделённых запятой – его элементы интерпретируются слева направо – и добавляются к объекту-множеству. Во втором варианте, когда дана конструкция компоновки списков – множество составляется из элементов, генерируемых этой конструкцией. Hittih 24.05.11 в 11:51 |
||
|
Пустое множество не может быть создано с помощью обозначения «<code>{}</code>» – эта запись создаёт пустой словарь. Hittih 24.05.11 в 11:56 |
||
|
5.2.7. Запись (обозначение, формулировка) словарей Hittih 24.05.11 в 11:59 |
||
|
Запись словаря – это последовательность (может быть пустая) пар ключ – данные, заключённая в фигурные скобки : Hittih 24.05.11 в 12:05 |
||
|
<code>dict_display ::= "{" [key_datum_list | dict_comprehension] "}" Hittih 22.04.11 в 11:03 |
