If I use import and a for follows afterwards I get an invalid syntax error. I have no idea why this happens.
> python3 -c 'import os; for a in range(1,5): print(a)'
File "", line 1
import os; for a in range(1,5): print(a)
^
Removing the import works fine:
> python3 -c 'for a in range(1,5): print(a)'
1
2
3
4
or totally removing the for loop:
> python3 -c 'import os; print(10)'
10
So what's going on??
解决方案
It's an error because it's not in the Python grammar.
If you check out the syntax specification for compound statements, you'll see that a statement list (i.e. what you're making with the semicolon) is defined as:
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
and the for construct is not a simple_stmt, but instead is a compound_stmt.
The print(10), however, is a simple_stmt and, as such, is just fine.