8

难倒这行得通:

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

但不是这个:

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

SyntaxError: invalid syntax
4

1 回答 1

17

后者不是一个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语句。

PS 三元表达式在官方文档中被称为“条件表达式” 。

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

expr1 if cond else expr2

它取expr1ifbool(cond) == Trueexpr2else 的值。

于 2013-04-19T21:51:17.330 回答