只是一个关于三元条件运算符的小问题,让我困惑了很长时间。
代码示例(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没有错。但它很容易制作 程序中的错误且没有显式错误。
第五行是根据《核心python编程》(Wesley J. Chun)一书从2.5版本开始的new-style,返回是对的。
有人知道这件事吗?
请您参考如下方法:
您的第三行和第四行不是三元运算符。他们试图使用其他运算符破解三元运算符,但是,如您所见,它们实际上并没有用,因为您使用的逻辑运算符取决于“ bool 假”的概念,而不仅仅是条件,但要根据条件返回的结果。准确添加了真正的三元运算符,因此您不必再使用那种伪造的东西。
