我似乎记得三元运算符测试存在的缩影。例如:
a = None
b = a if a else 'Not None!'
# b is now 'Not None!'
我认为这是像这样的
a else 'Not None!'
但这不起作用。也许还有另一种方法可以使用其他内置类型来缩写它?
答案 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,则可能会出现意外结果。例如,如果a
为0.0
,则会发生什么。
答案 2 :(得分:0)
这对我来说没有意义
a = None
b = a if a else 'Not None!'
对于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