我正在玩Python并决定以两种略微不同的方式编写一个因子函数:
import operator
def fact1(n):
return reduce(operator.__mul__,xrange(1,n+1))
和
def fact2(n):
return reduce(int.__mul__,xrange(1,n+1))
在计时时我很惊讶:
timeit fact1(10)
1000000 loops, best of 3: 933 ns per loop
timeit fact2(10)
1000000 loops, best of 3: 1.46 us per loop
operator.__mul__
似乎比int.__mul__
快两倍(除非在析因值变得如此之大以致Python将其从int
转换为long
时) / p>
我对Python很陌生,因此我不知道这些功能有何不同。是否存在性能差异的潜在原因?