用于赋值的 Python? (条件/三元)运算符

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

我之所以怀念这一点,是因为我发现我的代码中有很多条件赋值,在 Python 中需要四行:

if condition:
var = something
else:
var = something_else

而 C 代表:

var = condition ? something : something_else;

在一个文件中执行一次或两次是可以的,但是如果您有很多条件赋值,那么行的数量就会爆炸,最糟糕的是,它们会吸引人们的目光。

我喜欢条件运算符的简洁,因为它可以让我在浏览代码的时候避免分心。

那么,在 Python 中,你是否可以使用一个技巧将赋值转换到一行中,以接近我所描述的条件运算符的优点呢?

97736 次浏览

Python 有这样一个操作符:

variable = something if condition else something_else

另外,虽然不推荐(见 Karadoc 的评论) :

variable = (condition and something) or something_else

在旧的 Python 代码中,您可能会看到这样的技巧:

condition and something or something_else

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

something if condition else something_else