Multi-argument null coalesce and built-in "or" function in Python

It's not exactly a single built-in, but what you want to achieve can be easily done with:

def null_coalesce(*a):
    return next(x for x in a if x)

It's lazy, so it does short-circuit like a or b or c, but unlike reduce.

You can also make it null-specific with:

def null_coalesce(*a):
    return next(x for x in a if x is not None)

Is there a built-in function which I can use which acts like a or b?

No. Quoting from this answer on why:

The or and and operators can't be expressed as functions because of their short-circuiting behavior:

False and some_function()
True or some_function()

in these cases, some_function() is never called.

A hypothetical or_(True, some_function()), on the other hand, would have to call some_function(), because function arguments are always evaluated before the function is called.


Is there a built-in implementation of such a null coalesce function?

No, there isn't. However, the Python documentation page for itertools suggests the following:

def first_true(iterable, default=False, pred=None):
    """Returns the first true value in the iterable.

    If no true value is found, returns *default*

    If *pred* is not None, returns the first item
    for which pred(item) is true.

    """
    # first_true([a,b,c], x) --> a or b or c or x
    # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x
    return next(filter(pred, iterable), default)