python -c 'for i in range(10): print i'
works, and
python -c 'a=3;'
works, but
python -c 'a=3;for i in range(10): print i'
gave an error
File "<string>", line 1
a=3;for i in range(10): print i
^
SyntaxError: invalid syntax
Could anyone help point out why? Thank you.
Advertisement
Answer
; can only be used to separate “simple” statements, not compound statements.
https://docs.python.org/3/reference/compound_stmts.html
compound_stmt ::= if_stmt
| while_stmt
| for_stmt
| try_stmt
| with_stmt
| funcdef
| classdef
| async_with_stmt
| async_for_stmt
| async_funcdef
suite ::= stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT
statement ::= stmt_list NEWLINE | compound_stmt
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]