def factorial(x, start=1):
    """
    Calculate a factorial.

    This differs from the built-in `math.factorial` in that it allows a `start`
    argument. If one is given, the function returns `(x!)/(start!)`.

    Examples:

        >>> factorial(5)
        120
        >>> factorial(5, 3)
        60

    """
    from python_toolbox import misc_tools
    return misc_tools.general_product(range(start, x + 1), start=1)
