在导入流行的库(例如>>> import numpy
,然后再导入>>> help(numpy)
)时,会提供大量的类和函数。
这是我包裹的结构:
Blur/
├── __init__.py
├── blur
│ ├── __init__.py
│ ├── blur.py
│ ├── funcs
│ │ ├── __init__.py
│ │ └── funcs.py
│ ├── scripts
│ │ ├── __init__.py
│ │ └── blur_script.py
│ ├── tests
│ └── utils
│ ├── __init__.py
│ └── timer.py
└── setup.py
我先做>>> import blur
,然后再做>>> help(blur)
,我明白了:
NAME
blur
PACKAGE CONTENTS
blur
funcs (package)
scripts (package)
utils (package)
FILE
/Users/admin/Documents/Studie/IN3110/assignment4/Blur/blur/__init__.py
我希望import blur
导入blur.py模块及其功能和类。如果要导入blur.py,则必须编写import blur.blur
。认为这有点丑陋,不是吗?仅import blur
怎么办?
答案 0 :(得分:0)
因此,让我们沿着numpy
的一小部分走下去,希望可以使这变得更容易理解。
numpy主__init__.py
code
from . import polynomial
因此,这意味着在.
的同一文件夹中进行相对导入(我们从polynomial
知道)。因此在实践中,这会将模块名称放入我们通过以下操作知道的名称空间:
>>> 'polynomial' in dir(numpy)
True
命名空间中的最终结果大部分是基于模块名称和顶级程序包的。因此,在这种情况下,使用numpy
引入了每个导入,以构成可用功能/等等的庞大列表。
查看所有这些导入语句:
from . import _distributor_init
from . import core
from .core import *
from . import compat
from . import lib
# FIXME: why have numpy.lib if everything is imported here??
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