从我读到的资料中,我发现一个内置的三元运算符并不存在(我很乐意知道更多关于它的信息)。
我找到了以下代码作为替代:
def val():
var = float(raw_input("Age:"))
status = ("Working","Retired")[var>65]
print "You should be:",status
我不明白这段代码是如何工作的;有人能解释一下代码是如何工作的吗?我还想知道为什么三元运算符不存在;关于这一点的任何引用或链接都将非常有用。
我在WindowsVista上运行Python2.6.4。
Tags:
Python(2.5及更高版本)确实有一个用于您所寻找内容的语法:
如果
condition
为真,则x
将设置为foo
,否则将设置为bar
。示例:
Python有一个类似于C等语言中的三元运算符的结构。它的工作原理如下:
相当于C代码:
至于你发布的代码是如何工作的,让我们一步一步来:
创建一个2元组(不可变列表),其中元素“Working”位于索引0,而“Retired”位于索引1。
如果var大于65,则返回True;如果不大于65,则返回False。应用于索引时,它将转换为1(True)或0(False)。因此,这个布尔值为在同一行创建的元组提供索引。
为什么Python不总是有一个三元运算符?简单的答案是,Python的作者Guido van Rossum不喜欢/不想要它,显然他认为这是一个不必要的构造,可能会导致代码混乱(任何在C中看到大量嵌套的三元运算符的人都可能同意)。但对于Python2.5,他让步了,并添加了上面看到的语法。
因为True强制转换为1,False强制转换为0,所以如果var=70
变成
一条很好的捷径。。。但我发现它可能有点混乱,除了一个简单的条件,所以我同意TM的建议
相关问题 更多 >
编程相关推荐