Error de syntax con Python one-liner

python -c 'import sys; print "a"' 

trabaja, y

 python -c 'for a in [1, 2, 3]: print a' 

trabaja, pero

 python -c 'import sys; for a in [1, 2, 3]: print a' 

falla con

 File "", line 1 import sys; for a in [1, 2, 3]: print a ^ 

¿Por qué?


EDITAR mi solución:

 python -c 'import sys; print "\n".join([1, 2, 3])' 

(Por suerte también funcionó para mi código real).

Solo puedes usar ; para separar declaraciones no compuestas en una sola línea; la gramática no permite una statement no compuesta y una instrucción compuesta separadas por un punto y coma.

Las reglas gtwigticales relevantes son las siguientes:

 stmt: simple_stmt | compound_stmt simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE 

El ; en la producción simple_stmt es el único lugar donde los puntos y comas tienen permiso para separar declaraciones. Para más detalles, vea la gramática completa de Python .