On 06/17/2013 05:18 PM, Greg Ewing wrote:
I'm still not convinced that this is necessary or desirable
behaviour. I can understand the parser doing this as a
workaround before we had universal newlines, but now that
we do, I'd expect any Python string to already have newlines
converted to their canonical representation, and that any CRs
it contains are meant to be there. The parser shouldn't need
to do newline translation a second time.
It's the other way around.
Eval and exec should generate the same results as pythons compiler with the
same input, including errors and exceptions. The only way we can have that
is if eval and exec parses everything the same way.
It's the first parsing that needs to be avoided or compensated for in these
cases. Raw strings (my preference) works for string literals, or you can
escape the escape codes so they are still individual characters after the
first translation. Or read the code directly from a file rather than
importing it.
For example, if you wrote your own python console program, you would want
all the errors and exceptions to come from eval, including those for bad
strings. You would still need to feed the bad strings to eval. If you
don't then you won't get the same output from eval as the compiler does.
Cheers,
Ron
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com