蟒蛇? (条件/三元)运算符用于分配

时间:2010-06-22 08:07:31

标签: python c language-features

C和许多其他语言都有conditional (aka ternary)运算符。这允许您根据条件的真实性在两个值之间做出非常简洁的选择,这使得表达式(包括赋值)非常简洁。

我想念这个,因为我发现我的代码有很多条件赋值,在Python中占用四行:

if condition:
    var = something
else:
    var = something_else

而在C中它是:

var = condition? something: something_else;

文件中有一两次没问题,但是如果你有很多条件分配,那么线条就会爆炸,最糟糕的是,眼睛会吸引它们。

我喜欢条件运算符的简洁性,因为它会让我认为非策略性的东西在浏览代码时不会分散我的注意力。

所以,在Python中,您是否有任何技巧可以将赋值转换为单行来近似条件运算符的优点,如我所概述的那样?

2 个答案:

答案 0 :(得分:156)

Python有这样一个运算符:

variable = something if condition else something_else

或者,虽然不推荐(参见@ karadoc的评论):

variable = (condition and something) or something_else

答案 1 :(得分:13)

在较旧的Python代码中,您可能会看到诀窍:

condition and something or something_else

然而,这已被极其优越的... if ... else ...构造取代:

something if condition else something_else