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

时间:2013-04-19 21:48:36

标签: python

难以理解这是有效的:

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

但不是这样:

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

SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:12)

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

您可能会将其视为两个陈述(print or pass),但解释者对此有不同的看法:

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

并且第一行存在问题,因为它混合了表达式和语句。

单行if语句是另一回事:

if 5 % 2 == 0: print "no remainder"

这可以称为单行if语句。

P.S。三元表达式在official docs中被称为“条件表达式”。

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

expr1 if cond else expr2

如果expr1bool(cond) == True则为expr2