Python/Справочник по языку Python 3.1: различия между версиями

Содержимое удалено Содержимое добавлено
Продолжение перевода
Продолжение перевода
Строка 318:
:Частные имена класса. Имена этой категории, при использовании в рамках определения класса, автоматически модифицируются, чтобы избежать конфликтов имен между «частными» атрибутами базовых и производных классов. Смотрите в разделе «Идентификаторы (Имена)» .
 
== 2.4. «Литералы» ==
== Продолжение перевода ==
 
«Литералы» - это непосредственная запись постоянных значений некоторых встроенных типов.
<small>Перевод происходит, например, на : "http://notabenoid.com/book/5672/" ...</small>
 
=== 2.4.1. Текстовые («String») и байтовые («Bytes») «литералы» ===
<!--
 
Непосредственная запись текстовых данных имеет следующее лексическое определение:
2.4. Literals¶
 
stringliteral ::= [stringprefix](shortstring | longstring)
Literals are notations for constant values of some built-in types.
stringprefix ::= "r" | "R"
2.4.1. String and Bytes literals¶
shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
shortstringitem ::= shortstringchar | stringescapeseq
longstringitem ::= longstringchar | stringescapeseq
shortstringchar ::= <любой символ программы, кроме "\" или newline или закрывающей кавычки>
longstringchar ::= <любой символ программы, кроме "\">
stringescapeseq ::= "\" <любой символ программы>
bytesliteral ::= bytesprefix(shortbytes | longbytes)
bytesprefix ::= "b" | "B" | "br" | "Br" | "bR" | "BR"
shortbytes ::= "'" shortbytesitem* "'" | '"' shortbytesitem* '"'
longbytes ::= "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
shortbytesitem ::= shortbyteschar | bytesescapeseq
longbytesitem ::= longbyteschar | bytesescapeseq
shortbyteschar ::= <любой символ ASCII, кроме "\" или newline или закрывающей кавычки>
longbyteschar ::= <любой символ ASCII, кроме "\">
bytesescapeseq ::= "\" <любой символ ASCII>
 
Есть также одно синтаксическое ограничение, не отмеченное в этих определениях: знаки пробелов (пробела, табуляции, перевода страницы) не могут находится между строковым или байтовым префиксом и остальной частью «литерала» . Набор символов кода программы определяется объявлением кодировки, по умолчанию: UTF-8, смотрите раздел «Объявление кодировки» .
String literals are described by the following lexical definitions:
 
Говоря проще : оба типа «литералов» обрамляются с двух сторон одинаковыми кавычками :
stringliteral ::= [stringprefix](shortstring | longstring)
или по одной одинарной «'» , или по одной двойной «"» , или по три одинарных «'''» , или по три двойных «"""» (утроенные кавычки) . Символ бэкслэш «\» используется для «экранирования» (вставки в качестве простых печатных) символов, которые в других случаях имеют особое значение, такие как знак новой строки, сам бэкслэш или кавычки.
stringprefix ::= "r" | "R"
shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
shortstringitem ::= shortstringchar | stringescapeseq
longstringitem ::= longstringchar | stringescapeseq
shortstringchar ::= <any source character except "\" or newline or the quote>
longstringchar ::= <any source character except "\">
stringescapeseq ::= "\" <any source character>
 
Строковые литералы могут опционально начинаться с букв «r» или «R» ; такие строки называются «сырыми» («raw»), и считают бэкслэш обычным символом. В результате последовательности «\U» и «\u» специального значения в «сырых» строках не имеют.
bytesliteral ::= bytesprefix(shortbytes | longbytes)
bytesprefix ::= "b" | "B"
shortbytes ::= "'" shortbytesitem* "'" | '"' shortbytesitem* '"'
longbytes ::= "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
shortbytesitem ::= shortbyteschar | bytesescapeseq
longbytesitem ::= longbyteschar | bytesescapeseq
shortbyteschar ::= <any ASCII character except "\" or newline or the quote>
longbyteschar ::= <any ASCII character except "\">
bytesescapeseq ::= "\" <any ASCII character>
 
Байтовым «литералам» должен предшествовать префикс «b» или «B» . Они создают экземпляр типа «bytes» вместо типа «str» . Этот тип может содержать только символы ASCII; байты с численным значением больше 127 записываются с помощью особых последовательностей символов.
One syntactic restriction not indicated by these productions is that whitespace is not allowed between the stringprefix or bytesprefix and the rest of the literal. The source character set is defined by the encoding declaration; it is UTF-8 if no encoding declaration is given in the source file; see section Encoding declarations.
 
В текстовых данных в утроенных кавычках – могут присутствовать (и сохраняются как есть) «неэкранированные» знаки новой строки и кавычки (не в виде специальных последовательностей) , кроме трех «неэкранированных» кавычек подряд (того же вида, как и открывавшие), которые завершают запись текста.
In plain English: Both types of literals can be enclosed in matching single quotes (') or double quotes ("). They can also be enclosed in matching groups of three single or double quotes (these are generally referred to as triple-quoted strings). The backslash (\) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character.
 
Если нет префикса «r» или «R» , специальные последовательности в строках интерпретируются согласно правилам стандартного «C» . Опознаются следующие специальные последовательности:
String literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and treat backslashes as literal characters. As a result, '\U' and '\u' escapes in raw strings are not treated specially.
 
{| class="standard"
Bytes literals are always prefixed with 'b' or 'B'; they produce an instance of the bytes type instead of the str type. They may only contain ASCII characters; bytes with a numeric value of 128 or greater must be expressed with escapes.
!спец.<br /> последовательность||значение||примечание
|-
|\newline||и бэкслэш и символ<br /> новой строки отбрасываются||
|-
|\\||бэкслэш (\)||
|-
|\'||одинарная кавычка (')||
|-
|\"||двойная кавычка (")||
|-
|\a||ASCII Bell (BEL)||
|-
|\b||ASCII Backspace (BS)||
|-
|\f||ASCII Formfeed (FF)||
|-
|\n||ASCII Linefeed (LF)||
|-
|\r||ASCII Carriage Return (CR)||
|-
|\t||ASCII Horizontal Tab (TAB)||
|-
|\v||ASCII Vertical Tab (VT)||
|-
|\ooo||символ с 8-ричным<br /> значением ooo||(1,3)
|-
|\xhh||символ с 16-ричным<br /> значением hh||(2,3)
|-
|}
 
Следующие специальные последовательности опознаются только в текстовых данных:
In triple-quoted strings, unescaped newlines and quotes are allowed (and are retained), except that three unescaped quotes in a row terminate the string. (A “quote” is the character used to open the string, i.e. either ' or ".)
 
{| class="standard"
Unless an 'r' or 'R' prefix is present, escape sequences in strings are interpreted according to rules similar to those used by Standard C. The recognized escape sequences are:
!спец.<br /> последовательность||значение||примечание
Escape Sequence Meaning Notes
|-
\newline Backslash and newline ignored
|\N{name}||Символ с именем name в базе Unicode||
\\ Backslash (\)
|-
\' Single quote (')
|\uxxxx||Символ с 16-битным<br /> 16-ричным значением xxxx||(4)
\" Double quote (")
|-
\a ASCII Bell (BEL)
|\Uxxxxxxxx||Символ с 32-битным<br /> 16-ричным значением xxxxxxxx||(5)
\b ASCII Backspace (BS)
|-
\f ASCII Formfeed (FF)
|}
\n ASCII Linefeed (LF)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo (1,3)
\xhh Character with hex value hh (2,3)
 
:1. Как и в стандартном «C» , принимается до трех восьмеричных знаков.
Escape sequences only recognized in string literals are:
:2. В отличие от стандартного «C» , принимается строго два 16-ричных знака.
Escape Sequence Meaning Notes
:3. В байтовых данных 16- и 8-ричные специальные последовательности обозначают байт с данным значением. В текстовых данных они обозначают символ Юникода с данным кодом.
\N{name} Character named name in the Unicode database
:4. Отдельные коды, составляющие части суррогатной пары, могут быть закодированы при помощи специальных последовательностей. В отличие от стандартного «C» , требуется строго два 16-ричных знака.
\uxxxx Character with 16-bit hex value xxxx (4)
:5. Этим способом могут быть закодированы любые символы Юникода, но символы вне «Basic Multilingual Plane» (BMP) будут закодированы с помощью суррогатной пары, если Питон скомпилирован под использование 16-битных элементов кода Юникод (по умолчанию). Отдельные коды, составляющие части суррогатной пары, могут быть закодированы при помощи специальных последовательностей.
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (5)
 
В отличие от стандартного «C» , все неопознанные последовательности символов оставляются в тексте неизменными, т. е. бэкслэш остается в тексте. (Такое поведение полезно при отладке: если особая последовательность символов написана неправильно, то в том, что появляется на выходе легче заметить ошибку.) Кроме того, важно отметить, что управляющие последовательности опознающиеся только в записи текста попадают в категорию неопознанных последовательностей в записи байтовых данных.
Notes:
 
Даже в «сыром» тексте кавычки могут быть вставлены через бэкслэш, но бэкслэш остается в строке, например, «r"\""»является верной текстовой записью, состоящей из двух символов: бэкслэш и двойные кавычки; «r"\"» не является допустимой записью (даже «сырой» текст не может заканчиваться нечётным количеством бэкслэшей). В частности, «сырой» текст не может оканчиваться одним бэкслэшем (поскольку бэкслэш превращает следующую за ним кавычку в текст). Отметьте также, что один бэкслэш подряд, за которым сразу следует переход на новую строку интерпретируется как эти два символа, являющиеся частью строки, а не как продолжение строки.
1. As in Standard C, up to three octal digits are accepted.
 
2. Unlike in Standard C, at most two hex digits are accepted.
 
3. In a bytes literal, hexadecimal and octal escapes denote the byte with the given value. In a string literal, these escapes denote a Unicode character with the given value.
== Продолжение перевода ==
4. Individual code units which form parts of a surrogate pair can be encoded using this escape sequence. Unlike in Standard C, exactly two hex digits are required.
 
5. Any Unicode character can be encoded this way, but characters outside the Basic Multilingual Plane (BMP) will be encoded using a surrogate pair if Python is compiled to use 16-bit code units (the default). Individual code units which form parts of a surrogate pair can be encoded using this escape sequence.
<small>Перевод происходит, например, на : "http://notabenoid.com/book/5672/" ...</small>
 
<!--
 
Unlike Standard C, all unrecognized escape sequences are left in the string unchanged, i.e., the backslash is left in the string. (This behavior is useful when debugging: if an escape sequence is mistyped, the resulting output is more easily recognized as broken.) It is also important to note that the escape sequences only recognized in string literals fall into the category of unrecognized escapes for bytes literals.
 
Even in a raw string, string quotes can be escaped with a backslash, but the backslash remains in the string; for example, r"\"" is a valid string literal consisting of two characters: a backslash and a double quote; r"\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the string, not as a line continuation.
2.4.2. String literal concatenation¶