numpy为例,我似乎无法意识到这样做导入的好处:

import numpy.lib

导入完成后,numpy可用作名称,相当于直接导入它:
import numpy

在这两种情况下,只能通过点式访问访问子模块:
>>> numpy.lib
<module 'numpy.lib' from ....>

有没有一种情况下做lib会有好处?

最佳答案

摘要
实际效果取决于模块的实现方式。外部模块可能导入子包,也可能不导入子包。有关详细信息,请参见tutorial sectionon packages。
目录结构示例
例如,这里有一个可能的目录结构

outer
├── outer/__init__.py
└── outer/inner
    └── outer/inner/__init__.py

外部/初始py为空的情况
>>> import outer               # only loads outer
>>> import outer.inner         # loads both outer and inner

outer/\u init\uuuuuuuuuy加载子模块的情况
如果outer/__init__.py文件包含from . import inner,则会得到:
>>> import outer               # loads both outer and inner
>>> import outer.inner         # loads both outer and inner

纽比的具体案例
numpy模块匹配第二种情况,因此import numpyimport numpy.lib具有相同的效果。这是numpy的初始化文件的一个例外:
from . import core
from .core import *
from . import compat
from . import lib
from .lib import *
from . import linalg
from . import fft
from . import polynomial
from . import random
from . import ctypeslib
from . import ma
from . import matrixlib as _mat
from .matrixlib import *
from .compat import long

结论
在numpy的特定情况下,import numpyimport numpy.lib具有完全相同的效果。
希望能帮你解决问题:-)

关于python - 导入import package.submodule有什么好处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45261532/

10-16 12:40