我想知道是否可以在一行中编写以下 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
最佳答案
只有 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 使用缩进来分隔代码套件,您不能在以分号分隔的语句列表中使用缩进。
关于带有 if 语句的 Python oneliner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892336/