我很惊讶这个方法能够正常工作:
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或pass),但解释器看待它是不同的:
expr = "no remainder" if 5% 2 == 0 else pass
print expr
第一行存在问题,因为它混合了表达式和语句。
一行代码的if
语句是不同的东西:
if 5 % 2 == 0: print "no remainder"
这可以被称为单行if
语句。
P.S. 在官方文档中,三元表达式被称为“条件表达式”。
三元表达式使用了你尝试使用的语法,但是它需要两个表达式和一个条件(也是一个表达式):
expr1 if cond else expr2
如果bool(cond) == True
,则它的值为expr1
,否则为expr2
。
pass
关键字是不必要的。你可以简单地写成5 % 2 == 0: print "No remainder"
,并完全跳过else: pass
部分。 - msvalkonelse pass
与没有else
子句相同。此外,不正确的语法来自于使用print
,而不是else
。 - salezicaif
语句,就像我回答中的那个。 - Lev Levitsky