在蟒蛇之间有什么区别:他们是很相同的,他们的工作都的Python:有什么区别 - ABS和operator.abs
abs(a)
和operator.abs(a)
。如果他们是一样的,那么为什么两个独立的功能做同样的事情呢?
如果其中任何一个有某些特定的功能 - 请做解释。
在蟒蛇之间有什么区别:他们是很相同的,他们的工作都的Python:有什么区别 - ABS和operator.abs
abs(a)
和operator.abs(a)
。如果他们是一样的,那么为什么两个独立的功能做同样的事情呢?
如果其中任何一个有某些特定的功能 - 请做解释。
没有区别。文档甚至是这么说的:
>>> import operator
>>> print(operator.abs.__doc__)
abs(a) -- Same as abs(a).
它是作为一个包装只是这样的文件可以被更新:
from builtins import abs as _abs
# ...
def abs(a):
"Same as abs(a)."
return _abs(a)
(注意,上面的Python实现只有在C module itself不能使用被加载)。
它有纯粹补充其他(数学)运算符;例如如果您想在该模块上进行动态运算符查找,则不需要特殊情况abs()
。
没有什么区别。您可能想要使用operator.abs
,其功能如itertools.accumulate
,就像您使用operator.add
为+
一样。虽然有不同的表现。
例如使用operator.add
是快两倍+
(Beazly)。
在性能上比较'abs'和'add'是没有意义的。例如'operator.abs'和'abs'之间没有性能差别(除了'operator.abs'上的属性查找,可以通过绑定到本地名称来避免)。 –
@MartijnPieters同意。这就是为什么我使用'operator.add'作为例子。 –
@MartijnPieters我只是想表明,在operator模块中的东西在运营商面前并不是毫无意义的。 –