带有if语句的Python oneliner

Fra*_*ing 1 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
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 5

只有简单的语句才能出现在以分号分隔的语句列表中:

stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]
Run Code Online (Sandbox Code Playgroud)

一种if说法是复合语句,所以它是无效的语法包含它.

允许以分号分隔的列表中的复合语句会导致含糊不清.这是有效的语法:

if condition: a = 1; b = 1
Run Code Online (Sandbox Code Playgroud)

两个赋值只有在condition为真时才会执行,这就是大多数人直观地阅读该陈述的方式.如果我们允许的话

c = 1; if condition: a = 1; b = 1
Run Code Online (Sandbox Code Playgroud)

对于代码的读者来说,不清楚是否b = 1if声明的一部分.

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