math.sqrt是平方根的C实现,因此与使用
**实现Python内置
pow函数的运算符不同。因此,使用
math.sqrt实际给出的答案与使用
**运算符给出的答案不同,并且确实有一个计算上的原因比内置函数更偏向于
numpy或采用
math模块实现。特别是,sqrt函数可能以最有效的方式实现,而
**在大量的基数和指数上运行,并且对于平方根的特定情况可能未进行优化。另一方面,内置
pow函数可以处理一些额外的情况,例如“复数,无穷整数幂和模幂”。
有关
**和之间的区别的更多信息,请参见此堆栈溢出问题
math.sqrt。
关于哪个更“
Pythonic”,我认为我们需要讨论该词的确切定义。从官方Python词汇表中可以看出,如果某段代码或构想“紧紧遵循Python语言最常见的习惯用法,而不是使用其他语言的通用概念来实现代码”,则该代码或构想就是Pythonic。在我能想到的每种其他语言中,都有一些具有基本平方根函数的数学模块。但是,有些语言缺少像
**C
++这样的幂运算符。所以,
**可能是更Python,但它是否是客观的更好取决于所使用的情况。


![Python中的幂运算-我应该更喜欢**运算符,而不是math.pow和math.sqrt吗?[重复] Python中的幂运算-我应该更喜欢**运算符,而不是math.pow和math.sqrt吗?[重复]](http://www.mshxw.com/aiimages/31/668251.png)
