[Python-Dev] eval and triple quoted strings
Ron Adam
ron3200 at gmail.com
Tue Jun 18 02:44:21 CEST 2013
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
More information about the Python-Dev
mailing list