python中这个语句的全部含义是什么?
from . import *
我在某些应用程序中看到过这样的代码,例如这个用于我的地图文件阅读器。
答案 0 :(得分:1)
当您编写from mypkg import *
时,Python会查看程序包的__all__
文件的__init__.py
变量,该变量被认为填充了子模块的名称。然后,它将该变量中列出的所有子模块加载到本地名称空间中。如果__all__
不存在,则会加载__init__.py
文件中定义的所有符号(包括在该文件中明确导入的子模块,但不包括包的每个子模块)。 Reference
当您在内包(包内引用)中的子模块中时,使用from .
。这指的是子模块所包含的包,无论它具有什么名称。所以from . import *
完全按照上面描述的那样做,但对于子模块是其中一部分的包。请注意,如果子模块本身在__all__
变量中列出,那么它将因依赖循环而失败。
关于您的示例,模块本身是__init__.py
并且还定义了__all__
变量,因此幸运的是Python不会在依赖循环上崩溃。无论如何,该行无用,因为本地代码不使用这些模块。