我正在使用 PyQt 并且遇到了这个问题。如果我的导入语句是:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
然后 pylint 会给出数百个“未使用的导入”警告。我很犹豫是否要关闭它们,因为可能还有其他未使用的导入实际上很有用。另一种选择是这样做:
from PyQt4.QtCore import Qt, QPointF, QRectF
from PyQt4.QtGui import QGraphicsItem, QGraphicsScene, ...
我最终在 QtGui 线上有 9 个类(class)。还有第三种选择,即:
from PyQt4 import QtCore, QtGui
然后在我使用它们时为所有类添加 QtCore 或 QtGui 前缀。
在这一点上,我不知道我最终会在我的项目中做哪一个,尽管从我的角度来看,最后一个似乎是最痛苦的。这里的常见做法是什么?使用一种风格而不是另一种风格是否有技术原因?
最佳答案
您的问题标题的答案是"is":我建议永远不要使用 from ... import *
,我在另一个最近的答案中讨论了原因。简而言之,限定名称很好,裸名称非常有限,因此“第三个选项”在您呈现的人中是最佳选择(因为您将使用限定名称,而不是裸名称)。
(合格名称相对于裸名称的优点包括易于伪造/模拟以进行测试,降低了因意外重新绑定(bind)引起的未注意到错误的无效风险,能够“半伪造”“跟踪类”中的顶级名称目的是准确记录您正在使用的内容并简化诸如分析等事件 - 缺点,几乎没有......另请参阅 Python Zen 中最后但并非最不重要的公文,import this
在交互式解释器提示符处)。
同样好,如果你讨厌 7 个额外的字符来表示 QtCore.whatever
,就是缩写 -- from PyQt4 import QtCore as Cr
和 from PyQt4 import QtGi as Gu
(然后使用 Cr.blah
和 Gu.zorp
)等。像所有缩写一样,它是简洁性和清晰性之间的一种风格权衡(您是否愿意将变量命名为 count_of_all_widgets_in_the_inventory
、num_widgets
或 x
?通常是中间选择是最好的,但并非总是如此;-)。
顺便说一句,我不会在单个 from
或 import
语句中使用多个 as
子句(可能会造成混淆),我' d 宁愿有多个语句(如果任何导入出现问题,也更容易调试,如果您将来更改导入,则进行编辑,...)。
关于python - 应该避免通配符导入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615125/