python ? (conditionalternary)运算符,用于赋值[重复]。

问题描述 投票:99回答:2

C和许多其他语言都有一个 条件式 操作符。 这允许你根据条件的真假在两个值之间做出非常简洁的选择,这使得表达式,包括赋值,非常简洁。

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

if condition:
    var = something
else:
    var = something_else

而在C语言中则是:

var = condition? something: something_else;

在一个文件中用一两次就可以了, 但如果你有很多条件赋值,行数就会爆炸,最糟糕的是,眼睛会被它们吸引。

我喜欢条件操作符的严厉性,因为它能让我在浏览代码时,不至于让那些我认为没有策略的东西分散我的注意力。

那么,在Python中,有没有什么技巧可以让赋值到单行上,以近似于我概述的条件操作符的优点呢?

python c language-features
2个回答
174
投票

Python就有这样的操作符。

variable = something if condition else something_else

另外,虽然不推荐使用 (见 @karadoc 的评论)。

variable = (condition and something) or something_else

15
投票

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

condition and something or something_else

然而,它已经被更高级的 ... if ... else ... 构建。

something if condition else something_else
© www.soinside.com 2019 - 2024. All rights reserved.