是否有类似'Exp1的c? Exp2:使用Python的Exp3'?

时间:2019-04-01 08:19:25

标签: python refactoring

我想知道我心爱的C Makro 'Exp1 ? Exp2 : Exp3'.

是否有足够的python替代品

我已经尝试过Google,但似乎找不到任何东西。

示例:

x = 0.5
(x > 0) ? 1 : 0



if(type == "release"):
        release = True
else:
        release = False

4 个答案:

答案 0 :(得分:2)

您的情况看起来像这样

1 if x > 0 else 0

答案 1 :(得分:0)

对于Python 3.x

Ternary Operators

trueExp if expr. else falseExp 

x = 0.5
print(1 if x > 0 else 0)   # 1

对于 Python 2.5 和更低版本:

Is there an equivalent of C’s ”?:” ternary operator?

[expr.] and [trueExp] or [falseExp ]

x = 0.5
print((x > 0) and 1 or 0)   # 1

答案 2 :(得分:0)

您要寻找的被称为ternary operator

有多种方法可以在Python中实现此目标,但是您最常会找到这种结构:

x = 0.5
print(1 if x > 0 else 0)

答案 3 :(得分:0)

Python完全没有{em> 之类的Exp1 ? Exp2 : Exp3

但是,您可以将if-else语句压缩为一行。像

Exp2 if Exp1 else Exp3在某种程度上等同于您要寻找的Python。

(我遵循了您编写C代码的顺序)

更确切地说,它类似于:

TrueVal if Expression else FalseVal