关于三元条件算子的一个小问题让我困惑了很长时间.
例如代码(python 2.7):
>>> x, y = None, 3
>>> x, y
(None, 3)
>>> (x == None and x or y)
3
>>> (x != None and x or y)
3
>>> (x if x == None else y)
Run Code Online (Sandbox Code Playgroud)
第三行和第四行是旧式条件运算符.两者都给出了相同的结果.显然,前者采取"错误"的结果.根据python,也许没有错.但是在程序中犯错并且没有明确的错误很容易.
根据"Core python programming"(Wesley J. Chun)一书,第五行是2.5版的新版本,它的回归是正确的.
有人知道这个吗?
您的第三和第四行不是三元运算符.他们试图使用其他运算符来破解三元运算符,但正如您所看到的,它们并不真正起作用,因为您使用的逻辑运算符取决于"布尔虚假"的概念,而不仅仅是条件,但是您希望根据条件返回的结果.真正的三元运算符被精确添加,因此您不必再使用那种伪造了.