Python 有一个很好的 null 合并语法:
c = a or b
这设置c
为a
if a
is not False
, None
, empty, 或0
, elsec
设置为b
。
(是的,从技术上讲,这不是空合并,它更像是bool
合并,但对于这个问题来说它已经足够接近了。)
对于对象集合没有明显的方法来执行此操作,因此我编写了一个函数来执行此操作:
from functools import reduce
def or_func(x, y):
return x or y
def null_coalesce(*a):
return reduce(or_func, a)
这行得通,但写我自己的or_func
似乎不是最理想的——肯定有一个内置的 like __or__
?我尝试使用object.__or__
and operator.__or__
,但第一个给出 an AttributeError
,第二个指的是按位|
(或)运算符。
结果我有两个问题:
- 是否有一个类似的内置函数
a or b
? - 是否有这种空合并函数的内置实现?
两者的答案似乎是否定的,但这对我来说有点令人惊讶。