Skip to main content
 首页 » 编程设计

python之Python 中新旧三元条件运算符的不同结果

2025年05月04日11lautakyan007

只是一个关于三元条件运算符的小问题,让我困惑了很长时间。

代码示例(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 假”的概念,而不仅仅是条件,但要根据条件返回的结果。准确添加了真正的三元运算符,因此您不必再使用那种伪造的东西。