【发布时间】:2014-01-25 00:37:30
【问题描述】:
使用math.pow 或** 运算符哪个更有效?我应该什么时候使用一个而不是另一个?
到目前为止,我知道 x**y 可以返回 int 或 float 如果您使用小数
函数pow 将返回一个浮点数
import math
print( math.pow(10, 2) )
print( 10. ** 2 )
【问题讨论】:
-
为什么不
timeit来了解一下? -
timeit表明math.pow在所有情况下都比**慢。math.pow()到底有什么用?有没有人知道它在哪里可以有任何优势? -
@Alfe 你是如何衡量的,还是我误解了你的
in all cases?我see cases 其中math.pow要快得多。 -
@Wolf,你呢?您的链接指向
pow与math.pow的比较,但我说的是math.pow与**运算符的比较。您可以通过添加第三个版本来完成您的比较,然后**再次击败所有其他选项:import timeit; print timeit.timeit("math.pow(2, 100)",setup='import math'), timeit.timeit("pow(2, 100)"), timeit.timeit("2 ** 100")→0.170357942581 1.00546097755 0.013473033905。 -
但我不得不承认,结果并不完全一样。
math.pow总是 返回float(也用于int输入),而**返回其输入的类型(好吧,混合输入导致float)。但这仍然不是使用math.pow的好理由,恕我直言。