在python中'import ab as b'和'from a import b'之间有什么区别?

Tom*_*ner 7 python

我一直使用from a import b,但最近一个团队在工作决定一个模块移动到一个新的命名空间,并发出警告通知,告诉人们,以取代import bimport a.b as b.

我从未使用过import as,我能找到的唯一文档似乎表明它不支持import a.b as b,但显然它确实如此.

但实际上是否存在差异,如果是这样的话?

Sra*_*raw 2

据我所知,如果我错了,请纠正我。

首先,import a.b必须导入一个模块(一个文件)或一个包(一个目录包含__init__.py)。

例如,您可以import tornado.web as web,但不能import flask.Flask as Flask作为Flaskpackage 中的对象flask

其次,还要导入不会的名称import a.b空间。您可以通过 来检查。afrom a import bglobals()

那么有什么影响呢?例如:

import tornado.web as web
Run Code Online (Sandbox Code Playgroud)

现在您可以访问命名空间,但即使有此模块也tornado无法访问。但作为Python的全局包管理,如果你,你不仅可以访问而且还可以将其添加到命名空间中。所以现在您还可以通过访问。tornado.optionstornadofrom tornado import optionsoptionstornadooptionstornado.options