python - 应该避免通配符导入吗?

标签 python pyqt pyqt4 pylint python-import

我正在使用 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 Crfrom PyQt4 import QtGi as Gu(然后使用 Cr.blahGu.zorp)等。像所有缩写一样,它是简洁性和清晰性之间的一种风格权衡(您是否愿意将变量命名为 count_of_all_widgets_in_the_inventorynum_widgetsx?通常是中间选择是最好的,但并非总是如此;-)。

顺便说一句,我不会在单个 fromimport 语句中使用多个 as 子句(可能会造成混淆),我' d 宁愿有多个语句(如果任何导入出现问题,也更容易调试,如果您将来更改导入,则进行编辑,...)。

关于python - 应该避免通配符导入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615125/

相关文章:

qt - 拖放按钮和下拉菜单 PyQt/Qt designer

python - 随着时间的推移,将多维多索引数据帧与单索引数据帧相乘

python - python列表中的冒号和逗号代表什么?

python - QtGui.QTextEdit 根据线条包含的文本设置线条颜色

python - PyQt - 在小部件之上显示小部件

python - 如何通过QFileDialog获取pyqt6中的目录路径?

windows - 如何让Python PyQT程序在Windows中不打开命令行

python - PyQt4 GUI 中的标签不会随着 FOR 循环的每个循环而更新

python - 解释 WAV 数据

带有函数参数的 Python 装饰器