在Python中替换三元运算符的最好方法是什么?

可能重复:
Python中的三元条件运算符

如果我有这样的代码:

x = foo ? 1 : 2

我应该如何将它翻译成Python? 我可以这样做吗?

if foo:
  x = 1
else:
  x = 2

x还会在if / then块之外的范围内吗? 还是我必须做这样的事情?

x = None
if foo:
  x = 1
else:
  x = 2

在Python 2.5+中使用三元运算符(正式条件表达式)。

x = 1 if foo else 2

所提到的三元运算符只能从Python 2.5中获得。 来自WeekeePeedeea:

虽然由于语法方面的分歧而拖延了好几年,但Python的三元运算符被批准为Python增强建议308,并于2006年9月被添加到2.5版本。

Python的三元运算符与常用的?:运算符按其操作数的顺序不同; op1 if condition else op2 ,一般形式是op1 if condition else op2 。 该表格邀请将op1视为正常值,op2视为例外情况。

在2.5之前,人们可以使用丑陋的语法(lambda x:op2,lambda x:op1)[condition]() ,它也只考虑计算实际需要的表达式以防止副作用。


我在我的一个项目中仍然使用2.4,并且遇到过几次。 我看到的最优雅的解决方案是:

x = {True: 1, False: 2}[foo is not None]

我喜欢这个,因为它代表了一个更清晰的布尔测试,而不是使用索引值为0和1的列表来获得您的返回值。

链接地址: http://www.djcxy.com/p/7395.html

上一篇: What's the best way to replace the ternary operator in Python?

下一篇: Python ternary operator