只是一个关于三元条件运算符的小问题,让我困惑了很长时间。
例如代码(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)
第三行和第四行是老式的条件运算符。两者都给出相同的结果。显然,前者采用“错误”的结果。根据python可能没有错。但是在程序中很容易出错并且没有明显的错误。
第五行是根据《Core python Programming》(Wesley J. Chun)一书从2.5版开始的new-style,它的返回是正确的。
有人知道吗?