【发布时间】:2010-12-29 03:44:21
【问题描述】:
根据我的阅读,我发现内置的三元运算符不存在(我很乐意了解更多信息。)。
我找到了以下代码作为替代:
def val():
var = float(raw_input("Age:"))
status = ("Working","Retired")[var>65]
print "You should be:",status
我无法理解这段代码是如何工作的;谁能解释一下代码实际上是如何工作的?我也很想知道为什么三元运算符不存在;任何有关此的参考或链接都会很有用。
我在 Windows Vista 上运行 Python 2.6.4。
【问题讨论】:
-
Python 2.5 版本增加了三元运算符
-
-1:请不要称其为“THE”三元运算符。它只是一个条件运算符,它恰好是(许多)三元运算之一。其他三元运算包括
pow(x,y,z)。 -
也许我错了,但通常运算符是“+”或“%”或(在这种情况下)“if”。即:不是函数。我不认为 pow 会被视为三元运算符,它只是一个具有三个输入的函数。 (三元运算符,是的。operator,否。)在许多语言中,像 this 这样的内联条件是唯一需要三个输入的运算符,因此是三元运算符(对于该语言),所以它确实不正确。维基救援! en.wikipedia.org/wiki/Ternary_operator
-
(x, y)[bool]构造是 2.5 之前的标准习惯用法。与y if bool else x相比,它的缺点是总是计算x和y,而三元运算符会将其中一项短路。 -
@Toji:“操作”(我使用的词)和“操作员”的区别对我来说太微妙了。许多语言在许多符号中都有许多运算符。一元和二元运算符/操作很常见。但是将这个(并且只有这个)运算符/操作称为“三元”是愚蠢的。更高元的运算符呢?这是一个糟糕的术语,并且可以通过将其称为条件运算符来轻松避免,因为它就是这样。它恰好是三元的(或具有 3 的元数),但这不是定义特征。
标签: python indexing boolean conditional-operator