【发布时间】:2013-05-20 05:09:44
【问题描述】:
只是一个关于三元条件运算符的小问题,困扰了我很久。
代码示例(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,它的返回是正确的。
有人知道吗?
【问题讨论】:
-
有什么问题吗? ...“新”版本更冗长(显式优于隐式)
-
只有最后一个是三元运算符,这也许就是它起作用的原因吧?
-
@JoranBeasley,最重要的是,正确。与旧版本不同。
标签: python