繁体   English   中英

Pythonic从包中导入模块的方法

[英]Pythonic way to import modules from packages

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

from scipy import interpolate as spi

要么

import scipy.interpolate as spi

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

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

他们以略微不同的方式进行,但最终结果是一样的。

基本上,第一个做:

from scipy import interpolate
spi = interpolate
del interpolate

而第二个归结为

import scipy.interpolate
spi = scipy.interpolate
del scipy

最后你所拥有的是与interpolate函数绑定的spi名称。

就个人而言,我不会重命名这个函数,我会将其保留为import scipy并使用scipy.interpolate ,清楚地传达整个代码中对象的来源, 或者我使用from scipy import interpolate

重命名对象可能会让您更容易为您键入内容,但是当您在几个月缺席后重新访问此代码时,可能会让您或其他人更难以理解。

这真是一个品味问题。

在这种特殊情况下,我会使用import scipy.interpolate as spi ,以记住interpolatescipy的子模块。 如果我from module import function ,我将使用from module import function

唯一的办法是,与您选择的惯例保持一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM