Python中三元运算符的缩写

1 投票
3 回答
3598 浏览
提问于 2025-04-17 19:48

我好像记得有一个简写方式可以用来检查某个东西是否存在,使用的是三元运算符。比如说:

a = None
b = a if a else 'Not None!'
# b is now 'Not None!'

我记得应该是像这样写的

a else 'Not None!'

但是这样写不行。也许还有其他方法可以用其他内置类型来简化这个?

3 个回答

0

这对我来说真的不太明白

a = None
b = a if a else 'Not None!'

你把b设置为 Not None!,当a是任何假值的时候(包括None

也许你在想

a = None
b = 'Not None!' if a is None else a

或者其他什么的?

总之,除了那些可以不提的情况

b = a or 'Not None!'

或者

b = a and 'Not None!'

你就没办法避免提到a两次

1

是的,在你的情况下,有一个缩写。

b = a or 'Not None!'

几乎等同于

b = a if a else 'Not None!'

唯一的区别在于,a 在第一种情况下只计算一次,而在第二种情况下计算了两次。放入b中的值在两种情况下都是一样的。

另外,要明白的是,在这两段代码中,如果a不是None,但仍然是“假”的值,你可能会得到意想不到的结果。比如,如果a0.0,会发生什么呢?

3

不,没有可用的缩写。

你是不是在想 a or 'Not None!' 这个呢?

另外,顺便提一下:... if ... else ... 叫做条件表达式;它是一个三元运算符,SQL中的 BETWEEN ... IN ... 表达式也是三元运算符。

撰写回答