Python中用于赋值的条件/三元运算符?
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