我想知道是否可以在一行中编写以下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
答案 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使用缩进来分隔代码套件,并且不能在以分号分隔的语句列表中使用缩进。