Skip to content

Latest commit

 

History

History
50 lines (28 loc) · 1.49 KB

101.md

File metadata and controls

50 lines (28 loc) · 1.49 KB

#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(微信号)