我去查找来源np.transpose ( source ) 并且定义似乎是循环的?
def transpose(a, axes=None):
try:
transpose = a.transpose
except AttributeError:
return _wrapit(a, 'transpose', axes)
return transpose(axes)
如果transpose(a)
所做的只是调用a.transpose
,那么我们如何查找a.transpose
?
代码的哪一部分进行转置?我所看到的只是对另一个转置函数的引用。
最佳答案
它实际上不是循环引用。 a.transpose
是对对象方法的引用,而不是 numpy 定义的函数。它实际上是在说“如果对象 a
已经有 transpose
方法,则不要管它;否则,使用 _wrapit
来包装对象
”。ndarray
对象中的 a
由于 ndarray
类具有 transpose
方法,因此将 Python 对象强制放入该类即可让该对象访问该方法。
这有点超出了我的专业领域,但是 ndarray 似乎是在 numpy 代码的 C 部分中定义的,因此您可以在其中找到背后的实际逻辑它。
关于python - numpy:源代码中的循环定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886774/