**Update:**

In Python 3.8, the *prod* function was added to the *math* module. See: math.prod().

## Older info: Python 3.7 and prior

The function you’re looking for would be called *prod()* or *product()* but Python doesn’t have that function. So, you need to write your own (which is easy).

## Pronouncement on prod()

Yes, that’s right. Guido rejected the idea for a built-in prod() function because he thought it was rarely needed.

## Alternative with reduce()

As you suggested, it is not hard to make your own using *reduce()* and *operator.mul()*:

```
from functools import reduce # Required in Python 3
import operator
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
```

Note, in Python 3, the *reduce()* function was moved to the functools module.

## Specific case: Factorials

As a side note, the primary motivating use case for *prod()* is to compute factorials. We already have support for that in the math module:

```
>>> import math
>>> math.factorial(10)
3628800
```

## Alternative with logarithms

If your data consists of floats, you can compute a product using *sum()* with exponents and logarithms:

```
>>> from math import log, exp
>>> data = [1.2, 1.5, 2.5, 0.9, 14.2, 3.8]
>>> exp(sum(map(log, data)))
218.53799999999993
>>> 1.2 * 1.5 * 2.5 * 0.9 * 14.2 * 3.8
218.53799999999998
```

Note, the use of *log()* requires that all the inputs are positive.