如果我之后使用import
并且for
,则会出现invalid syntax
错误。我不知道为什么会这样。
> python3 -c 'import os; for a in range(1,5): print(a)'
File "<string>", line 1
import os; for a in range(1,5): print(a)
^
删除import
可以正常工作:
> python3 -c 'for a in range(1,5): print(a)'
1
2
3
4
或完全删除for
循环:
> python3 -c 'import os; print(10)'
10
那是怎么回事?
答案 0 :(得分:5)
这是一个错误,因为它不在Python语法中。
如果您查看syntax specification for compound statements,您会看到一个声明列表(即您使用分号制作的内容)定义为:
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
且for
构造不是simple_stmt
,而是compound_stmt
。
然而,print(10)
是simple_stmt
,因此,就可以了。
答案 1 :(得分:1)
如您所见,Python不允许您将块打开语句(如for
)放入带有其他语句的行中。
一般情况下,在某些情况下你不应该在脚本中使用;
(比如使用-c
的python代码的命令执行)它是唯一的解决方案,但在脚本中只使用换行符。
有关Python中编码样式标准的详细信息,请阅读PEP 8:http://legacy.python.org/dev/peps/pep-0008/