compile() and comments

Ed Leafe ed at leafe.com
Mon Oct 13 08:06:55 EDT 2008


	I've noticed an odd behavior with compile() and code that does not  
contain a trailing newline: if the last line is a comment inside of  
any block, a syntax error is thrown, but if the last line is a non- 
comment Python statement, there is no error. Here's an example (using  
2.5.1 on OS X)

 >>> txt = """
... def foo():
...   print 'bar' """
 >>> compcode = compile(t.strip(), "", "exec")
 >>> compcode
<code object <module> at 0x79608, file "", line 2>

 >>> txt += "  # Comment on last line"
 >>> compcode = compile(txt.strip(), "", "exec")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "", line 4
    # Comment on last line
                        ^
SyntaxError: invalid syntax
 >>> compcode = compile(txt.strip() + "\n", "", "exec")
 >>> compcode
<code object <module> at 0x79a40, file "", line 2>

	Obviously the easy workaround is to add a newline and all is well, so  
this isn't a show-stopper, but is this a bug?

-- Ed Leafe






More information about the Python-list mailing list