strange syntax error

W

_wolf

this may not be an earth-shattering deficiency of python, but i still
wonder about the rationale behind the following behavior: when i
run ::

source = """
print( 'helo' )
if __name__ == '__main__':
print( 'yeah!' )

#"""

print( compile( source, '<whatever>', 'exec' ) )

i get ::

File "<whatever>", line 6
#
^
SyntaxError: invalid syntax

i can avoid this exception by (1) deleting the trailing ``#``; (2)
deleting or outcommenting the ``if __name__ == '__main__':\n
print( 'yeah!' )`` lines; (3) add a newline to very end of the
source.

moreover, if i have the source end without a trailing newline right
behind the ``print( 'yeah!' )``, the source will also compile without
error.

i could also reproduce this behavior with python 2.6, so it’s not new
to the 3k series.

i find this error to be highly irritating, all the more since when i
put above source inside a file and execute it directly or have it
imported, no error will occur—which is the expected behavior.

a ``#`` (hash) outside a string literal should always represent the
start of a (possibly empty) comment in a python source; moreover, the
presence or absence of a ``if __name__ == '__main__'`` clause should
not change the interpretation of a soure on a syntactical level.

can anyone reproduce the above problem, and/or comment on the
phenomenon?

cheers
 
J

Jerry Hill

   File "<whatever>", line 6
     #
     ^
 SyntaxError: invalid syntax

I believe you're encountering this bug:
http://bugs.python.org/issue1184112

It's been fixed for 2.7 and 3.2. Until then, you'll need to work
around it. You can either append a newline to the end of any source
snippets that you are exec-ing, or if you're writing the code snippets
that are being exec-ed yourself, don't write them in such a way that
they trigger the bug.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top