传递给Python的参数数';战俘

传递给Python的参数数';战俘,python,python-2.7,Python,Python 2.7,Python内置的pow允许3个参数,而math.pow只允许2个参数,这有什么原因吗 当然,我们可以懒洋洋地说,“因为它就是这样设计的” 但是有人知道这个设计决定背后的原因吗 编辑: 澄清一下,我明白区别是什么,但我想知道为什么我们两者都需要。为什么不让内置的3参数pow代码注释这样说: 相当于x**y(带两个参数)或x**y%z(带三个参数 (论据) 某些类型(如int)能够使用更高效的算法 使用三参数形式调用时 代码注释说明如下: 相当于x**y(带两个参数)或x**y%z(带三个参数 (

Python内置的
pow
允许3个参数,而
math.pow
只允许2个参数,这有什么原因吗

当然,我们可以懒洋洋地说,“因为它就是这样设计的”

但是有人知道这个设计决定背后的原因吗

编辑:


澄清一下,我明白区别是什么,但我想知道为什么我们两者都需要。为什么不让内置的3参数
pow

代码注释这样说:

相当于
x**y
(带两个参数)或
x**y%z
(带三个参数 (论据)

某些类型(如int)能够使用更高效的算法 使用三参数形式调用时


代码注释说明如下:

相当于
x**y
(带两个参数)或
x**y%z
(带三个参数 (论据)

某些类型(如int)能够使用更高效的算法 使用三参数形式调用时


我明白,但是为什么不总是使用内置的
pow
。是否存在效率较低的情况?我理解这一点,但为什么不始终使用内置的
pow
。是否有效率较低的情况?我不相信这是重复的。我不是问有什么区别。我只是想知道为什么我们两个都需要。有理由不总是使用内置函数吗?我还没有对它进行基准测试,但我认为
math.pow
更有效,因为它只处理浮点(并调用底层C库),而内置
pow
更通用,但效率必然更低,因为它必须查找
\u pow()\uuuuuuuu
(或根据需要
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu方法的参数。我不认为这是重复的。我不是问它们的区别是什么。我只是想知道为什么我们需要两者。有没有理由不总是使用内置函数?我还没有对它进行基准测试,但我认为
math.pow
更有效,因为它只处理浮点数(并调用底层C库),而内置的
pow
更通用,但效率必然更低,因为它必须根据需要在其参数中查找
\uuuuuupow()\uuuuuuuu
(或
\uuuuuurpow()\uuuuuuuuu
)方法。