从包中导入模块的 Pythonic 方式

标签 python scipy python-import

以下 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/

相关文章:

python - Flask 的 -a 参数?

python - python中 `[foo]`后面的 `from bar import foo`有什么特殊含义吗? (也许是 python2 特有的)

python - 查看仅当前用户对象的列表,Django REST

numpy - 仅沿一个轴进行卷积

Python-control - 步进系统

python - 围绕中心单元旋转 3x3 阵列的每个单元的模块(不是矩阵旋转)

python - 重新导入子脚本中的模块

python - 如何统计数字的总设置位数

python - AWS BOTO3 连接到 MS SQL 数据库时出错

Python:理解 os.listdir() 方法