我似乎记得三元运算符测试存在的缩写。例如:
a = None
b = a if a else 'Not None!'
# b is now 'Not None!'
我以为是这样的
a else 'Not None!'
但这不起作用。也许还有另一种使用其他内置类型来缩写它的方法?
我似乎记得三元运算符测试存在的缩写。例如:
a = None
b = a if a else 'Not None!'
# b is now 'Not None!'
我以为是这样的
a else 'Not None!'
但这不起作用。也许还有另一种使用其他内置类型来缩写它的方法?
不,没有可用的缩写。
你是不是在想a or 'Not None!'
呢?
附带说明:... if ... else ...
被称为条件表达式;它是一个三元运算符,但 SQLBETWEEN ... IN ...
表达式也是如此。
是的,在你的情况下有一个缩写。
b = a or 'Not None!'
几乎等于
b = a if a else 'Not None!'
唯一的区别是a
在第一种情况下评估一次,在第二种情况下评估两次。在任何一种情况下,放入的值b
都是相同的。
此外,请意识到在任一代码中,如果a
不是 None,但仍然是 False-y,您可能会得到意想不到的结果。例如,考虑如果a
is会发生什么0.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
两次