human
Complete this python program:
def de_bruijn(alphabet=string.ascii_lowercase, n=None):
assistant
#Here is the Python code you requested.

    """de_bruijn(alphabet = string.ascii_lowercase, n = 4) -> generator
    Generator for a sequence of unique substrings of length `n`. This is implemented using a
    De Bruijn Sequence over the given `alphabet`.
    The returned generator will yield up to ``len(alphabet)**n`` elements.
    Arguments:
    alphabet: List or string to generate the sequence over.
    n(int): The length of subsequences that should be unique.
    """
    if (n is None):
        n = 4
    k = len(alphabet)
    a = (([0] * k) * n)
    def db(t, p):
        if (t > n):
            if ((n % p) == 0):
                for j in range(1, (p + 1)):
                    (yield alphabet[a[j]])
        else:
            a[t] = a[(t - p)]
            for c in db((t + 1), p):
                (yield c)
            for j in range((a[(t - p)] + 1), k):
                a[t] = j
                for c in db((t + 1), t):
                    (yield c)
    return db(1, 1)