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

152 投票
2 回答
114214 浏览
提问于 2025-04-16 00:16

C语言和很多其他编程语言都有一个叫做条件运算符(也叫三元运算符)。这个运算符可以让你根据一个条件的真假,快速在两个值之间做选择,这样写出来的代码就会很简洁。

我很怀念这个运算符,因为我发现我的Python代码中有很多条件赋值,通常需要四行代码:

if condition:
    var = something
else:
    var = something_else

而在C语言中,这样的代码只需要:

var = condition ? something : something_else;

如果在一个文件中出现一两次这样的情况还好,但如果有很多条件赋值,代码行数就会激增,最糟糕的是,这些行会很容易吸引你的注意力。

我喜欢条件运算符的简洁,因为它能让我在快速浏览代码时,不被我认为不重要的内容分心。

那么,在Python中,有没有什么技巧可以把赋值写成一行,从而接近我刚才提到的条件运算符的优点呢?

2 个回答

21

在旧版的Python代码中,你可能会看到这样的写法:

condition and something or something_else

不过,这种写法已经被更好用的 ... if ... else ... 结构所取代:

something if condition else something_else
254

Python有一个这样的运算符:

variable = something if condition else something_else

另外,虽然不推荐使用(可以查看karadoc的评论):

variable = (condition and something) or something_else

撰写回答