带有if语句的Python oneliner

时间:2016-08-11 09:24:58

标签: python if-statement

我想知道是否可以在一行中编写以下python if语句。我也想知道为什么我收到以下错误:

python -c 'a=1; if True: print a; else: a=a+1'

  File "<string>", line 1
    a=1; if True: print a; else: a=a+1
          ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:5)

simple statements can appear in a semicolon-separate statement list

stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]

if语句是复合语句,因此包含它的语法无效。

以分号分隔的列表中允许复合语句会导致歧义。这是有效的语法:

if condition: a = 1; b = 1

只有在condition为真时才执行这两项任务,这就是大多数人直观地阅读该陈述的方式。如果我们允许

c = 1; if condition: a = 1; b = 1

对于代码的读者来说,b = 1是否属于if声明是不明确的。

Python使用缩进来分隔代码套件,并且不能在以分号分隔的语句列表中使用缩进。