尝试在一行if语句中使用pass关键字时出错

Der*_*ntz 6 python

难过这是有效的:

if 5 % 2 == 0:
        print "no remainder"
else:
        pass
Run Code Online (Sandbox Code Playgroud)

但不是这个:

print "no remainder" if 5% 2 == 0 else pass

SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

Lev*_*sky 13

后者不是一个if语句,而是一个表达式(我的意思是,它print是一个语句,但其余的被解释为一个表达式,它失败了).表达式具有价值.pass没有,因为这是一个声明.

您可能会将其视为两个语句(print or pass),但解释器会以不同的方式看待它:

expr = "no remainder" if 5% 2 == 0 else pass
print expr
Run Code Online (Sandbox Code Playgroud)

并且第一行是有问题的,因为它混合了表达式和语句.

单行if声明是另一回事:

if 5 % 2 == 0: print "no remainder"
Run Code Online (Sandbox Code Playgroud)

这可以称为单行if语句.

PS三元表达式在官方文档中称为"条件表达式" .

三元表达式使用您尝试使用的语法,但它需要两个表达式和一个条件(也是一个表达式):

expr1 if cond else expr2
Run Code Online (Sandbox Code Playgroud)

并且它取得expr1if bool(cond) == Trueexpr2否则的值.