#Python是否有三元条件运算符?
原问题地址:http://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator
##问题:
如果没有,是否可以使用其他语言结构来模拟一个?
##答案 1
是的,在2.5版本以后增加了。语法是:
a if test else b
首先对test进行评估,然后根据test的布尔值返回到a或b;
如果test评估结果为真,则返回到a,否则就返回到b。
例如:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
记住,一些python开发者对此并不赞成:
- 参数的顺序不同于许多其他的语言(如:C, Ruby, Java等)。当人们不熟悉Python的“奇怪”行为时(他们可能会颠倒顺序),可能会导致错误。
- 有些人觉得它“不便使用”,因为它违背了常规思路:人们习惯先考虑条件,后考虑效果。
- 格式上的原因。
如果你在记忆顺序方面有困难(正如许多人似乎都有这个困难),那么请记住,把它大声读出来,你(几乎)是在说,x = 4 if b > 8 else 9
被大声读作x will be 4 if b is greater than 8 otherwise 9
(x就等于4,如果b大于8而不是9)。
##答案 2
模拟Python三元运算符
例如:
a, b, x, y = 1, 2, 'a greather than b', 'b greater than a'
result = (lambda:y, lambda:x)[a > b]()
输出:
'b greater than a'
打赏帐号:qiwsir@126.com(支付宝),qiwsir(微信号)