6

以下 import 语句的效果之间是否存在细微或不那么细微的区别?我发现两者都在示例程序中使用,果然,它们似乎都可以工作。如果它们在功能上完全等效,那将违背 Python 的“只有一种方法可以做事”,所以我很困惑。我刚开始使用 Python 并试图保持良好的习惯。例如,对于 scipy 包中的插值模块...

from scipy import interpolate as spi

或者

import scipy.interpolate as spi

两者似乎都将插值模块作为 spi 放在当前命名空间中

4

2 回答 2

10

不,这两个语句之间没有区别,它们都将完全相同的对象放入您的模块命名空间(globals())中,名称完全相同。

他们以略有不同的方式进行,但最终结果是相同的。

本质上,第一个是:

from scipy import interpolate
spi = interpolate
del interpolate

第二个归结为

import scipy.interpolate
spi = scipy.interpolate
del scipy

最后,您所拥有的只是spi绑定到该interpolate函数的名称。

就个人而言,我不会像那样重命名函数,我会保留它import scipy并使用scipy.interpolate,在整个代码中清楚地传达对象来自哪里,或者我会使用from scipy import interpolate.

重命名对象可能会使您更容易键入,但可能会使您或其他人在您离开几个月后重新访问此代码时更难理解。

于 2012-09-25T08:42:16.067 回答
0

这是一个品味问题,真的。

在这种特殊情况下,我会使用import scipy.interpolate as spi, 来记住它interpolatescipy. 如果我要从模块中导入函数,我会使用from module import function.

唯一的事情是,与您选择的约定保持一致。

于 2012-09-25T09:05:27.340 回答