python中三元运算符的缩写

时间:2013-03-20 21:38:28

标签: python conditional-operator

我似乎记得三元运算符测试存在的缩影。例如:

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

我认为这是像这样的

a else 'Not None!'

但这不起作用。也许还有另一种方法可以使用其他内置类型来缩写它?

3 个答案:

答案 0 :(得分:3)

不,没有可用的缩写。

您是否考虑过a or 'Not None!'

作为旁注:... if ... else ...称为conditional expression;它是一个三元运算符,但SQL BETWEEN ... IN ...表达式也是如此。

答案 1 :(得分:1)

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

b = a or 'Not None!'

几乎相当于

b = a if a else 'Not None!'

唯一的区别是a在第一种情况下评估一次,在第二种情况下评估两次。在任何一种情况下,b中的值都是相同的。

另外,要意识到在任一代码中,如果a不是None,但仍然是False-y,则可能会出现意外结果。例如,如果a0.0,则会发生什么。

答案 2 :(得分:0)

这对我来说没有意义

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

对于Not None!的任何错误值(包括a

,您将b设置为None

也许你在想

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

还是什么?

无论如何,除了你可以逃脱的情况

b = a or 'Not None!'

b = a and 'Not None!'

没有办法避免两次提及a