难倒这行得通:
if 5 % 2 == 0:
print "no remainder"
else:
pass
但不是这个:
print "no remainder" if 5% 2 == 0 else pass
SyntaxError: invalid syntax
难倒这行得通:
if 5 % 2 == 0:
print "no remainder"
else:
pass
但不是这个:
print "no remainder" if 5% 2 == 0 else pass
SyntaxError: invalid syntax
后者不是一个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
它取expr1
ifbool(cond) == True
和expr2
else 的值。