导入
后,我正在查看numpy.random
中可用的内容
from numpy import random
使用dir(random)
,并注意到范围中有一个变量np
,它看起来等同于顶级模块,例如
In[1]: from numpy import random
In[2]: random.np.fft.fft2
Out[2]: <function numpy.fft.fftpack.fft2>
In[3]: random.np.random.np.fft.np # not the same for fft
AttributeErrorTraceback (most recent call last)
<ipython-input-78-a64e04c36c80> in <module>()
----> 1 random.np.random.np.fft.np
AttributeError: module 'numpy.fft' has no attribute 'np'
这对我来说有点奇怪......或者至少不是我以前在其他Python模块中看到的东西。看起来我可以通过import numpy as np
中的np
变量通过random
访问我所能做的一切。
我想知道子模块是如何使用的,所以我在源代码中查看了numpy/random/__init__.py
,并没有看到它是如何可用的。我还在__all__
查看numpy/random/info.py
,但无法找到它如何暴露给模块。
顶级模块如何提供给numpy.random
,是否有任何动机让它可用?