以下 import 语句的效果之间是否存在细微差别?我发现它们都用在示例程序中,果然,它们似乎都有效。如果它们在功能上完全相同,那将违背 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
最后,您所拥有的只是绑定(bind)到 interpolate
函数的 spi
名称。
就我个人而言,我不会那样重命名函数,我会将其保留为 import scipy
并使用 scipy.interpolate
,清楚地传达对象的来源代码,或者我会使用 from scipy import interpolate
。
重命名对象可能会让您更容易键入,但可能会让您或其他人在您离开几个月后重新访问此代码时更难理解。
关于从包中导入模块的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579181/