Simplifying this factorial function
First, if n == 1the method returns, so there is no need for the else.
Let us see what 6! would result in: 6 * 5! which is just 6 * 5 * 4! and so on.
Now we see a patter: n! = n * (n-1)!
Keeping this in mind we can refactor the given method to only take one parameter and to be recursive.
def factorial(n):
    if n &lt; 0 :
        raise ValueError(&quot;Negative values are not allowed.&quot;)
    if n == 0 : return 1

    return n * factorial(n-1)

print factorial(6)

As James Snell stated correctly in his comment, we can replace the n == 1 check with a n &lt;= 2 check if we assume n &gt;= 1.
As jonrsharpe stated correctly in his comment, 0! should return 1 and also negative numbers don't have a factorial.
As Simon André Forsberg stated correctly in his comment, rasing an error for a negative parameter should be done.