“从xy导入z”和“将xyz导入为z”之间的区别

发布于 2021-01-29 16:29:08

在要将嵌套模块导入名称空间的情况下,我总是这样写:

from concurrent import futures

但是,我最近意识到,这也可以使用“ as”语法表示。请参阅以下内容:

import concurrent.futures as futures

从主观上看,它看起来更类似于其他进口商品:

import sys
import os
import concurrent.futures as futures

…具有增加冗长性的缺点。

两者之间是否存在功能上的区别,或者在PEP中是官方首选还是其他?

关注者
0
被浏览
164
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    功能上有一些差异。首先,正如注释中已经提到的,它import package.thing as thing必须thing是一个模块(或子包,实际上并不是一个单独的情况,因为包算作模块)。

    其次,在Python 3.5及更高版本中,如果from package import thing发现for的模块对象package没有thing属性,它将尝试查找sys.modules['package.thing']作为后备。添加此功能是为了处理循环相对进口的某些情况。import package.thing as thing还没有执行此操作,但它在Python 3.7。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看