Skip to main content
 首页 » 编程设计

带有 if 语句的 Python oneliner

2025年05月04日24落叶无声

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