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 .