带有 if 语句的 Python oneliner

标签 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

最佳答案

只有 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/

相关文章:

python - Pandas df.to_csv ("file.csv"encode ="utf-8")仍然为减号提供垃圾字符

python - Django:每个 "event__pk"的聚合

python - 使用创建按钮直接打开 "one2many form view"(odoo)

java - 二元运算符的操作数类型错误 '<='

javascript - 在附加 HTML 时执行 IF 语句的多个实例的更好方法?

c - 即使数组编号匹配,它仍然返回 false

python - 树莓派 - psutil 安装错误

Python 多个字符串比较不起作用

vb.net - 从 vb.net 中的一串数字中提取特定数字

PHP - 确定数据是否已删除