为什么使用模块导入*是不好的做法?

时间:2015-06-08 14:12:46

标签: python module

作为一种习惯,堆栈流和示例页面中的几乎每个人都使用import numpy as np 然后键入

t = numpy.arange(0,40000,4000)

为什么我们/为什么使用from numpy import *是不好的做法 然后键入

t = arange(0,40000,4000)

请给我理由。 (我猜: 1.如果我们需要导入多个模块,不同模块中的某些功能共享相同的名称。 2.在import module == from module import *?,我可以看到这种习惯'导致处理时间更快。)还有其他什么原因?

1 个答案:

答案 0 :(得分:2)

这是Python style guide所说的:

  

应避免使用通配符导入(from <module> import *),因为它们不清楚命名空间中存在哪些名称,这会使读者和许多自动化工具混淆。通配符导入有一个可防御的用例,即将内部接口重新发布为公共API的一部分(例如,使用可选加速器模块中的定义覆盖接口的纯Python实现,以及确切的定义将是被覆盖的事先不知道。

相关问题