Python中三元运算符的缩写
我好像记得有一个简写方式可以用来检查某个东西是否存在,使用的是三元运算符。比如说:
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,但仍然是“假”的值,你可能会得到意想不到的结果。比如,如果a
是0.0
,会发生什么呢?
3
不,没有可用的缩写。
你是不是在想 a or 'Not None!'
这个呢?
另外,顺便提一下:... if ... else ...
叫做条件表达式;它是一个三元运算符,SQL中的 BETWEEN ... IN ...
表达式也是三元运算符。