小编典典

在Python中,用通配符导入所有属性是一种好习惯吗?

python

为什么呢?

有时我需要导入模块的所有属性,因此我使用通配符导入,但是我的一个Vim脚本(使用flake8作为其语法检查器)总是向我发出警告,并告诉我无法检测到未定义的名称。

使用通配符导入还有其他缺点吗?


阅读 362

收藏
2021-01-20

共1个答案

小编典典

使用通常不是一个好主意from module import *。通配符导入会导致名称空间污染;您导入的名称超出了所需的数量,并且如果您不小心引用了导入的名称,则可能不会得到所需的NameError。

另外,如果库的未来版本添加了其他名称,则最终可能会 掩盖其他名称 ,从而仍然导致陌生的错误:

from foo import bar
from spam import *

如果您进行升级spam并且现在包含,spam.bar它将替换foo.bar上一行中的导入。

2021-01-20