为什么这种执行python的方式不起作用

时间:2019-07-01 06:00:29

标签: python

python -c 'for i in range(10): print i'

有效,并且

python -c 'a=3;'

可以,但是

python -c 'a=3;for i in range(10): print i'

出现错误

  File "<string>", line 1
    a=3;for i in range(10): print i
          ^
SyntaxError: invalid syntax

有人可以指出原因吗?谢谢。

2 个答案:

答案 0 :(得分:5)

因为这就是Python语法的工作方式。 for与引入缩进级别的所有其他语句一样,不喜欢在缩进级别之前添加任何内容。

在这种情况下,您需要换行符,而不是分号。这些是合法的(假设bash):

python -c 'a=3
for i in range(10)]: print(i)'

python -c $'a=3\nfor i in range(10): print(i)'

答案 1 :(得分:4)

;仅可用于分隔“简单”语句,而不能用于复合语句。

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)* [";"]