在 python 中导入带点的模块

Importing modules with dot in python

我已经阅读 https://www.python.org/dev/peps/pep-0008/#imports 但我没有找到明确的确认。

假设包的结构如下:

|-package1
|--|__init__.py
│--|module.py

我想在 __init__.py 中导入 module.py

我想知道之间是否有任何语义差异:

from . import module

from .module import *

假设我想在每次加载 package 时导入 module.py 中的所有内容。

这两者之间的最大区别在于第一种情况将名称保留在 module 中,第二种情况将所有名称从 module 导入当前名称空间。

假设module.py定义了一个函数foo.

from . import module
module.foo()

对比

from .module import *
foo()

但就导入系统加载 module/package 的方式而言,没有任何变化。两个 import 语句都指向完全相同的模块,并且只指向该模块。您如何按名称访问导入的模块受导入语句的影响,如上所示。

此外,PEP8 只是一个风格指南。 PEP328 将告诉您更多有关相对进口的信息