C和许多其他语言都有一个 条件式 操作符。 这允许你根据条件的真假在两个值之间做出非常简洁的选择,这使得表达式,包括赋值,非常简洁。
我很怀念这一点,因为我发现我的代码中有很多条件赋值,在 Python 中需要四行。
if condition:
var = something
else:
var = something_else
而在C语言中则是:
var = condition? something: something_else;
在一个文件中用一两次就可以了, 但如果你有很多条件赋值,行数就会爆炸,最糟糕的是,眼睛会被它们吸引。
我喜欢条件操作符的严厉性,因为它能让我在浏览代码时,不至于让那些我认为没有策略的东西分散我的注意力。
那么,在Python中,有没有什么技巧可以让赋值到单行上,以近似于我概述的条件操作符的优点呢?
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