strange syntax error in python, version 2.6 and 3.1
Posted
by flow
on Stack Overflow
See other posts from Stack Overflow
or by flow
Published on 2010-06-04T18:36:42Z
Indexed on
2010/06/05
16:22 UTC
Read the original article
Hit count: 378
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
© Stack Overflow or respective owner