Re: Unrecognized escape sequences in string literals
- From: Carl Banks <pavlovevidence@xxxxxxxxx>
- Date: Mon, 10 Aug 2009 00:37:33 -0700 (PDT)
On Aug 9, 11:10 pm, Steven D'Aprano
<ste...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
On Sun, 09 Aug 2009 18:34:14 -0700, Carl Banks wrote:
Why should a backslash in a string literal be an error?
Because the behavior of \ in a string is context-dependent, which means
a reader can't know if \ is a literal character or escape character
without knowing the context, and it means an innocuous change in context
can cause a rather significant change in \.
*Any* change in context is significant with escapes.
"this \nhas two lines"
If you change the \n to a \t you get a significant difference. If you
change the \n to a \y you get a significant difference. Why is the first
one acceptable but the second not?
Because when you change \n to \t, you've haven't changed the meaning
of the \ character; but when you change \n to \y, you have, and you
did so without even touching the backslash.
IOW it's an error-prone mess.
I've never had any errors caused by this.
Thank you for your anecdotal evidence. Here's mine: This has gotten
me at least twice, and a compiler complaint would have reduced my bug-
hunting time from tens of minutes to ones of seconds. [Aside: it was
when I was using Python on Windows for the first time]
I've never seen anyone write to
this newsgroup confused over escape behaviour, or asking for help with an
error caused by it, and until this thread, never seen anyone complain
about it either.
More anecdotal evidence. Here's mine: I have.
Excuse my cynicism, but I believe that you are using "error-prone" to
mean "I don't like this behaviour" rather than "it causes lots of errors"..
No, I'm using error-prone to mean error-prone.
Someone (obviously not you because you're have perfect knowledge of
the language and 100% situation awareness at all times) might have a
string like "abcd\stuv" and change it to "abcd\tuvw" without even
thinking about the fact that the s comes after the backslash.
Worst of all: they might not even notice the error, because the repr
of this string is:
'abcd\tuwv'
They might not notice that the backslash is single, because (unlike
you) mortal fallible human beings don't always register tiny details
like a backslash being single when it should be double.
Point is, this is a very bad inconsistency. It makes the behavior of
\ impossible to learn by analogy, now you have to memorize a list of
situations where it behaves one way or another.
Carl Banks
.
- Follow-Ups:
- Re: Unrecognized escape sequences in string literals
- From: Steven D'Aprano
- Re: Unrecognized escape sequences in string literals
- References:
- Unrecognized escape sequences in string literals
- From: Douglas Alan
- Re: Unrecognized escape sequences in string literals
- From: Steven D'Aprano
- Re: Unrecognized escape sequences in string literals
- From: Carl Banks
- Re: Unrecognized escape sequences in string literals
- From: Steven D'Aprano
- Unrecognized escape sequences in string literals
- Prev by Date: Re: Unrecognized escape sequences in string literals
- Next by Date: Re: Unrecognized escape sequences in string literals
- Previous by thread: Re: Unrecognized escape sequences in string literals
- Next by thread: Re: Unrecognized escape sequences in string literals
- Index(es):
Relevant Pages
|