mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 11:04:25 +01:00
Translate String and backslashes example
This commit is contained in:
parent
191ea8343b
commit
293575b7c4
44
translations/README-ru.md
vendored
44
translations/README-ru.md
vendored
@ -1248,3 +1248,47 @@ SyntaxError: invalid syntax
|
|||||||
- **Примечание:** Проблема с запятыми в конце списка аргументов [исправлена в Python 3.6](https://bugs.python.org/issue9232). Варианты использования запятых в конце выражения приведены в [обсуждении](https://bugs.python.org/issue9232#msg248399).
|
- **Примечание:** Проблема с запятыми в конце списка аргументов [исправлена в Python 3.6](https://bugs.python.org/issue9232). Варианты использования запятых в конце выражения приведены в [обсуждении](https://bugs.python.org/issue9232#msg248399).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Строки и обратные слэши
|
||||||
|
<!-- Example ID: 6ae622c3-6d99-4041-9b33-507bd1a4407b --->
|
||||||
|
**Вывод:**
|
||||||
|
```py
|
||||||
|
>>> print("\"")
|
||||||
|
"
|
||||||
|
|
||||||
|
>>> print(r"\"")
|
||||||
|
\"
|
||||||
|
|
||||||
|
>>> print(r"\")
|
||||||
|
File "<stdin>", line 1
|
||||||
|
print(r"\")
|
||||||
|
^
|
||||||
|
SyntaxError: EOL while scanning string literal
|
||||||
|
|
||||||
|
>>> r'\'' == "\\'"
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 💡 Объяснение
|
||||||
|
|
||||||
|
- В обычной строке обратная слэш используется для экранирования символов, которые могут иметь специальное значение (например, одинарная кавычка, двойная кавычка и сам обратный слэш).
|
||||||
|
```py
|
||||||
|
>>> "wt\"f"
|
||||||
|
'wt"f'
|
||||||
|
```
|
||||||
|
- В необработанном строковом литерале (на что указывает префикс `r`) обратный слэш передается как есть, вместе с поведением экранирования следующего символа.
|
||||||
|
```py
|
||||||
|
>>> r'wt\"f' == 'wt\\"f'
|
||||||
|
True
|
||||||
|
>>> print(repr(r'wt\"f')
|
||||||
|
'wt\\"f'
|
||||||
|
|
||||||
|
>>> print("\n")
|
||||||
|
|
||||||
|
>>> print(r"\\n")
|
||||||
|
'\\n'
|
||||||
|
```
|
||||||
|
- Это означает, что когда синтаксический анализатор встречает обратный слэш в необработанной строке, он ожидает, что за ней последует другой символ. А в нашем случае (`print(r"\")`) обратная слэш экранирует двойную кавычку, оставив парсер без завершающей кавычки (отсюда `SyntaxError`). Вот почему обратный слеш не работает в конце необработанной строки.
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user