在蟒蛇之間有什麼區別:他們是很相同的,他們的工作都的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模塊中的東西在運營商面前並不是毫無意義的。 –