[英]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
,以记住interpolate
是scipy
的子模块。 如果我from module import function
,我将使用from module import function
。
唯一的办法是,与您选择的惯例保持一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.