关于python:为什么从模块导入import *使用是不好的做法?

Why is it bad practice to use from module import *?

本问题已经有最佳答案,请猛点这里访问。

作为一种习惯,几乎stackoverflow和示例页面中的每个人都使用import numpy as np然后类型

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

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

1
t = arange(0,40000,4000)

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


这就是《Python样式指南》所说的:

Wildcard imports ( from import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools. There is one defensible use case for a wildcard import, which is to republish an internal interface as part of a public API (for example, overwriting a pure Python implementation of an interface with the definitions from an optional accelerator module and exactly which definitions will be overwritten isn't known in advance).