def firstof(*args, default=None): """ Returns the first value which is neither empty nor None. """ if len(args) == 1: iterable = args[0] else: iterable = args for value in iterable: if value: return value return default def join_existing(delimiter, *items): return delimiter.join([str(i) for i in items if i])