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 -- http://mail.python.org/mailman/listinfo/python-list