关于Python的ternary conditional operator 三目运算符

python ? (conditional/ternary) operator for assignments

本问题已经有最佳答案,请猛点这里访问。

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

我很怀念这一点,因为我发现我的代码有很多条件赋值,它们在python中采用了四行:

1
2
3
4
if condition:
    var = something
else:
    var = something_else

而在C语言中是:

1
var = condition? something: something_else;

在一个文件中一次或两次是可以的,但是如果有很多条件赋值,那么行数就会爆炸,最糟糕的是,眼睛会盯着它们。

我喜欢条件运算符的简洁性,因为它可以防止我认为不具有战略意义的东西在略读代码时分散我的注意力。

所以,在python中,有没有什么技巧可以用来将赋值放到一行中,以近似于我概述的条件运算符的优点?


python有这样一个操作符:

1
variable = something if condition else something_else

或者,尽管不推荐(见@karadoc's comment):

1
variable = (condition and something) or something_else


在旧的python代码中,您可能会看到以下技巧:

1
condition and something or something_else

然而,这已被超级优越的... if ... else ...结构所取代:

1
something if condition else something_else