The Python Language Reference / Справочник по языку Python: 2. Lexical analysis
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Примечание: vanderloos 07.07.10 в 10:00 |
|
|
Имя _ часто используется всвязи с интернационализацией, см. документацию модуля gettext для получения информации по этой договоренности. vanderloos 07.07.10 в 10:17 Имя «_» часто используется в связи с интернационализацией, смотрите документацию модуля «gettext» для получения информации по этой договоренности. Hittih 23.08.10 в 13:48 |
||
|
2.4. Литералы vanderloos 07.07.10 в 10:19 2.4. «Литералы» Hittih 23.08.10 в 22:33 |
||
|
2.4.1. Строковые (String) и Байтовые (Bytes) литералы vanderloos 07.07.10 в 10:23 2.4.1. Текстовые («String») и байтовые («Bytes») «литералы» Hittih 23.08.10 в 22:44 |
||
|
stringliteral ::= [stringprefix](shortstring | longstring) vanderloos 07.07.10 в 10:24 stringliteral ::= [stringprefix](shortstring | longstring) Hittih 23.08.10 в 22:57 |
||
|
bytesliteral ::= bytesprefix(shortbytes | longbytes) vanderloos 07.07.10 в 10:24 bytesliteral ::= bytesprefix(shortbytes | longbytes) Hittih 23.08.10 в 23:09 |
||
|
Есть также одно синтаксическое ограничение, не отмеченное в этих условиях: знаки пробелов (пробела, табуляции, перевода страницы) не могут находится между строковой или байтовой приставкой и остальной частью литерала. Набор исходных символов определяется объявлением кодировки, по умолчанию: UTF-8, см. раздел "Объявление кодировки". vanderloos 07.07.10 в 10:31 Есть также одно синтаксическое ограничение, не отмеченное в этих определениях: знаки пробелов (пробела, табуляции, перевода страницы) не могут находится между строковым или байтовым префиксом и остальной частью «литерала» . Набор символов кода программы определяется объявлением кодировки, по умолчанию: UTF-8, смотрите раздел «Объявление кодировки» . Hittih 23.08.10 в 23:33 |
||
|
Простым языком: Оба типа литералов могут быть включены в одинарные кавычки (') или двойные кавычки ("). Также они могут быть включены в группы из трех двойных или одинарных кавычек (они обычно называются строки в тройных кавычках). Символ бэкслеш (\) используется для экранирования символов, которые в других случаюх имеют особое значение, такие как знак новой строки, сам бэкслеш или кавычки. vanderloos 07.07.10 в 10:38 Говоря проще : оба типа «литералов» обрамляются с двух сторон одинаковыми кавычками : или по одной одинарной «'» , или по одной двойной «"» , или по три одинарных «'''» , или по три двойных «"""» (утроенные кавычки) . Символ бэкслэш «\» используется для «экранирования» (вставки в качестве простых печатных) символов, которые в других случаях имеют особое значение, такие как знак новой строки, сам бэкслэш или кавычки. Hittih 24.08.10 в 00:22 |
||
|
Строковые литералы могут опционально начинаться с букв 'r' или 'R'; такие строки называются "сырыми" ("raw"), и считают бэкслеш обычным символом. vanderloos 07.07.10 в 10:52 Строковые литералы могут опционально начинаться с букв «r» или «R» ; такие строки называются «сырыми» («raw»), и считают бэкслэш обычным символом. Hittih 24.08.10 в 00:29 |
||
|
Байтовым литералам должна предшествовать приставка 'b' или 'B'. Они создают экземпляр типа bytes вместо типа str. Этот тип может содержать только символы ASCII; если численное значение превышает или равно 128, то строка должна быть экранирована. vanderloos 07.07.10 в 11:51 Байтовым «литералам» должен предшествовать префикс «b» или «B» . Они создают экземпляр типа «bytes» вместо типа «str» . Этот тип может содержать только символы ASCII; байты с численным значением больше 127 записываются с помощью особых последовательностей символов. Hittih 24.08.10 в 00:49 |
||
|
В строках в тройных кавычках могут присутствовать (и сохраняются как есть) неэкранированные знаки новой строки и кавычки, кроме трех неэкранированных кавычек подряд, которые завершают строку. ("Кавычка" - это символ начала строки (значения со строковым типом), т.е. ' или ".) vanderloos 07.07.10 в 12:30 В текстовых данных в утроенных кавычках – могут присутствовать (и сохраняются как есть) «неэкранированные» знаки новой строки и кавычки (не в виде специальных последовательностей) , кроме трех «неэкранированных» кавычек подряд (того же вида, как и открывавшие), которые завершают запись текста. Hittih 24.08.10 в 01:17 |
||
|
Если нет приставки 'r' или 'R', последовательности экранирования в строках обрабатываются согласно правилам стандартного C. Существуют следующие последовательности экранирования: vanderloos 07.07.10 в 12:51 Если нет префикса «r» или «R» , специальные последовательности в строках интерпретируются согласно правилам стандартного «C» . Опознаются следующие специальные последовательности: Hittih 24.08.10 в 01:29 |
||
|
Последовательности экранирования для строковых литералов: vanderloos 07.07.10 в 12:55 |
||
|
Примечания: vanderloos 07.07.10 в 12:58 |
||
|
1. Как и в стандартном C, принимается до трех восьмиричных знаков. vanderloos 07.07.10 в 13:20 1. Как и в стандартном «C» , принимается до трех восьмеричных знаков. Hittih 24.08.10 в 02:55 |
||
|
В отличие от стандартного C, все нераспознанные последовательности экранирования оставляются в строке без изменения, т.е. бэкслеш остается в строке. (Такое поведение может быть полезно при отладке: если какая-то последовательность экранирования неправильно написана, легче определить, что результат неверный). Важно также отметить, что последовательности действующие только для строковых литералов, попадают в категорию нераспознанных для байтовых литералов. vanderloos 08.07.10 в 08:52 В отличие от стандартного «C», все неопознанные последовательности символов оставляются в тексте неизменными, т. е. бэкслэш остается в тексте. (Такое поведение полезно при отладке: если особая последовательность символов написана неправильно, то в том, что появляется на выходе легче заметить ошибку.) Кроме того, важно отметить, что управляющие последовательности опознающиеся только в записи текста попадают в категорию неопознанных последовательностей в записи байтовых данных. Hittih 08.07.10 в 12:33 |
||
|
Даже в «сыром» тексте кавычки могут быть вставлены через бэкслэш, но бэкслэш остается в строке, например, «r"\""»является верной текстовой записью, состоящей из двух символов: бэкслэш и двойные кавычки; «r"\"» не является допустимой записью (даже «сырой» текст не может заканчиваться нечётным количеством бэкслэшей). В частности, «сырой» текст не может оканчиваться одним бэкслэшем (поскольку бэкслэш превращает следующую за ним кавычку в текст). Отметьте также, что один бэкслэш подряд, за которым сразу следует переход на новую строку интерпретируется как эти два символа, являющиеся частью строки, а не как продолжение строки. Hittih 07.07.10 в 14:33 |
||
|
2.4.2. Соединение текстовых записей (литералов) Hittih 07.07.10 в 15:33 |
||
|
re.compile("[A-Za-z_]" # буква или подчёркивание Hittih 08.07.10 в 12:05 |
||
|
Обратите внимание, что это свойство определено на синтаксическом уровне, но реализуется во время компиляции. Для соединения фрагментов текста во время исполнения – должен использоваться оператор «+» . Заметьте также, что при соединении текста могут использоваться различные стили оформления для каждого фрагмента (даже смешивание «сырого» текста и в тройных кавычках) . Hittih 07.07.10 в 16:30 |
||
|
2.4.3. Непосредственная запись чисел Hittih 07.07.10 в 16:47 |
||
|
Заметьте, что знак не является частью записи числа - такая формулировка, как «-1» , на самом деле является выражением, состоящим из унарного оператора «-» и числа «1» . Hittih 07.07.10 в 16:55 |
||
|
2.4.4. Запись целых чисел Hittih 07.07.10 в 17:03 |
||
|
integer ::= decimalinteger | octinteger | hexinteger | bininteger Hittih 08.07.10 в 12:00 |
||
|
Нет ограничения длины записи числа, кроме размера доступной памяти. Hittih 07.07.10 в 17:13 |
||
|
Обратите внимание, что нули в начале ненулевого десятичного числа не допускаются. Это сделано для отличения их от восьмеричной записи в стиле «C» , которая использовалась в Питоне до версии 3.0 . Hittih 07.07.10 в 17:26 |
||
|
Некоторые примеры записи целых чисел: Hittih 07.07.10 в 17:27 |
||
|
7 2147483647 0o177 0b100110111 Hittih 08.07.10 в 12:00 |
||
|
2.4.5. Запись дробных чисел (с плавающей запятой) Hittih 07.07.10 в 17:31 |
||
|
floatnumber ::= pointfloat | exponentfloat Hittih 08.07.10 в 12:00 |
||
|
Заметьте, что в целой и экспонентной частях всегда подразумевается основание 10 . Например, 077e010 является допустимым и значит то же, что и 77e10 . Допустимый диапазон дробных чисел может различаться в разных реализациях. Примеры записи дробных чисел: Hittih 07.07.10 в 17:43 |
||
|
3.14 10. .001 1e100 3.14e-10 0e0 Hittih 08.07.10 в 11:59 |
||
|
Заметьте, что знак не является частью записи числа - такая формулировка, как «-1» , на самом деле является выражением, состоящим из унарного оператора «-» и числа «1» . Hittih 07.07.10 в 17:45 |
||
|
2.4.6. Запись мнимых чисел Hittih 07.07.10 в 17:47 |
||
|
imagnumber ::= (floatnumber | intpart) ("j" | "J") Hittih 08.07.10 в 11:58 |
||
|
Под мнимое число отводится комплексное число с действительной частью «0» . Комплексные числа представлены в виде пары чисел с плавающей точкой, которые имеют обычные ограничения диапазона их значений. Чтобы создать комплексное число с ненулевой действительной частью, нужно сложить обычное дробное число с мнимым числом, например, «(3 + 4j)» . Некоторые примеры записи мнимых чисел: Hittih 08.07.10 в 10:44 |
||
|
3.14j 10.j 10j .001j 1e100j 3.14e-10j Hittih 08.07.10 в 11:59 |
||
|
2.5. Операторы Hittih 08.07.10 в 10:46 |
||
|
+ - * ** / // % Hittih 08.07.10 в 11:58 |
||
|
2.6. Разделители Hittih 08.07.10 в 10:54 |
||
|
( ) [ ] { } Hittih 08.07.10 в 11:58 |
||
|
Точка также встречается в записи дробных и мнимых чисел. Последовательность из трех точек имеет особое значение - обозначение пропуска («ellipsis»), вторая половина списка, расширенная операция присваивания, служит в качестве лексического разделителя, и кроме этого выполняет операцию. Hittih 08.07.10 в 11:34 |
||
|
Следующие печатные символы ASCII имеют особое значение как часть других лексем, и, таким образом, важны для лексического анализатора: Hittih 08.07.10 в 11:46 |
||
|
' " # \ Hittih 08.07.10 в 11:57 |
||
|
Следующие печатные символы ASCII не используются в Питоне. Их появление за пределами записи текстовых данных или комментариев безусловно является ошибкой: Hittih 08.07.10 в 11:57 |
||
|
$ ? Hittih 08.07.10 в 11:57 |
