三元符的替代
P:
a = 3
b = 2 if a > 2 else 1
#b = 2
NP:
if a > 2:
b = 2
else:
b = 1
#b = 2
如果你具备C的编程经验,你就会寻找A ? B : C的替代品。你可能发现A and B or C看起来还不错,但是b = a > 1 and False or True会返回True,而实际意图应该返回False。
使用b = False if a > 1 else True则会正确返回False,所以它才是正宗的三元符替代品。