Python 中赋值的条件/三元运算符? [重复]

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

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

我错过了这一点,因为我发现我的代码有很多条件赋值,在 Python 中需要四行:

if condition:
    var = something
else:
    var = something_else

而在 C 中则是:

var = condition ? something : something_else;

在一个文件中一次或两次是可以的,但如果有很多条件分配,行数就会激增,最糟糕的是眼睛会被它们吸引。

我喜欢条件运算符的简洁性,因为它可以防止我在浏览代码时认为不具有策略性的事情分散我的注意力。

那么,在 Python 中,是否可以使用一种技巧将赋值放到一行中,以近似条件运算符的优点,正如我所概述的那样?

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

Python有这样一个运算符:

variable = something if condition else something_else

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

variable = (condition and something) or something_else

21
投票

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

condition and something or something_else

但是,这已被更加优越的

... if ... else ...
结构所取代:

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