Steven D'Aprano wrote: > Why should a backslash in a string literal be an error?
Because in Python, if my friend sees the string "foo\xbar\n", he has no idea whether the "\x" is an escape sequence, or if it is just the characters "\x", unless he looks it up in the manual, or tries it out in the REPL, or what have you. My friend is adamant that it would be better if he could just look at the string literal and know. He doesn't want to be bothered to have to store stuff like that in his head. He wants to be able to figure out programs just by looking at them, to the maximum degree that that is feasible. In comparison to Python, in C++, he can just look "foo\xbar\n" and know that "\x" is a special character. (As long as it compiles without warnings under g++.) He's particularly annoyed too, that if he types "foo\xbar" at the REPL, it echoes back as "foo\\xbar". He finds that to be some sort of annoying DWIM feature, and if Python is going to have DWIM features, then it should, for example, figure out what he means by "\" and not bother him with a syntax error in that case. Another reason that Python should not behave the way that it does, is that it pegs Python into a corner where it can't add new escape sequences in the future, as doing so will break existing code. Generating a syntax error instead for unknown escape sequences would allow for future extensions. Now not to pick on Python unfairly, most other languages have similar issues with escape sequences. (Except for the Bourne Shell and bash, where "\x" always just means "x", no matter what character "x" happens to be.) But I've been telling my friend for years to switch to Python because of how wonderful and consistent Python is in comparison to most other languages, and now he seems disappointed and seems to think that Python is just more of the same. Of course I think that he's overreacting a bit. My point of view is that every language has *some* warts; Python just has a bit fewer than most. It would have been nice, I should think, if this wart had been "fixed" in Python 3, as I do consider it to be a minor wart. |>ouglas -- http://mail.python.org/mailman/listinfo/python-list