Numpy同时提供了np.absolute
和别名np.abs
from .numeric import absolute as abs
这似乎明显违反了the zen of python:
应该有一个 - 最好只有一个 - 明显的方法来做到这一点。
所以我猜这有充分的理由。
我个人一直在几乎所有的代码中使用np.abs
并查看例如在Stack Overflow上搜索np.abs与np.absolute的搜索结果数量相似,绝大多数搜索结果相同(2130 vs 244次点击)。
我有什么理由在我的代码中优先使用np.absolute
而不是np.abs
,或者我应该只选择更“标准”的np.abs
?
这可能是因为有一个同名的内置函数abs
。 np.amax
,np.amin
和np.round_
也是如此。
NumPy函数abs
, min
, max
and round
的别名仅在顶级包中定义。
所以np.abs
和np.absolute
完全相同。你使用哪一个并不重要。
短名称有几个优点:它们更短,并且Python程序员知道它们,因为名称与内置Python函数相同。因此,最终用户可以更轻松(更少打字,更少记住)。
但也有理由有不同的名称:NumPy(或更普遍的第三方软件包)有时需要Python函数abs
,min
等。所以在软件包中他们定义了具有不同名称的函数,因此您仍然可以访问Python函数 - 并且只是在包的顶层你公开了“快捷方式”。注意:在这种情况下,不同的名称不是唯一可用的选项:如果有一个阴影内置名称,可以使用Python模块builtins
来访问内置函数。
也可能是这种情况(但这是我的纯粹猜测),他们最初只包括长命名函数absolute
(等等),后来只添加了短别名。作为一个庞大且使用良好的库,NumPy开发人员不会轻易删除或弃用这些东西。因此,他们可能只保留长名称,因为它可能会破坏旧代码/脚本,如果他们将删除它们。