编程语言
首页 > 编程语言> > python – 应该避免使用通配符导入吗?

python – 应该避免使用通配符导入吗?

作者:互联网

我正在使用PyQt并遇到了这个问题.如果我的import语句是:

from PyQt4.QtCore import *
from PyQt4.QtGui import *

然后pylint给出了数百个“未使用的导入”警告.我很犹豫要把它们关闭,因为可能有其他未使用的导入实际上很有用.另一种选择是这样做:

from PyQt4.QtCore import Qt, QPointF, QRectF
from PyQt4.QtGui import QGraphicsItem, QGraphicsScene, ...

我最终在QtGui线上有9节课.还有第三种选择,它是:

from PyQt4 import QtCore, QtGui

然后每当我使用它们时,用QtCore或QtGui为所有类添加前缀.

在这一点上,我不知道我最终在我的项目中做了哪一个,尽管从我的角度来看,最后一个似乎是最痛苦的.这里的常见做法是什么?是否有技术理由使用一种风格而不是另一种风格?

解决方法:

你问题标题的答案是“是”:我建议永远不要使用… import *,我在另一个最近的答案中讨论了原因.简而言之,合格的名称是好的,姓名非常有限,因此“第三选项”是最佳的(因为您将使用合格的名称,而不是姓名).

(合格名称的优点,包括伪名称,包括易于伪造/模拟以用于测试目的,减少因意外重新绑定引起的无意识错误的无效风险,能够在“跟踪类”中“半假”顶级名称以进行日志记录正是你正在使用和简化诸如剖析之类的活动等等 – 缺点,几乎没有…也参见Python的Zen中的最后但并非最不重要的公案,在交互式解释器提示中导入).

同样好,如果你吝啬7个额外的字符来说QtCore.whatever,就是缩写 – 从PyQt4导入QtCore作为Cr,从PyQt4导入QtGi作为Gu(然后使用Cr.blah和Gu.zorp)等.像所有缩写一样,它是简洁和清晰之间的风格权衡(你更愿意命名变量count_of_all_widgets_in_the_inventory,num_widgets或x?中间选择通常是最好的,但并非总是如此;-).

顺便说一句,我不会在单个from或import语句中使用多个as子句(可能会令人困惑),我宁愿有多个语句(如果任何导入问题也更容易调试,如果更改导入则编辑在将来, …).

标签:python,python-import,pyqt,pyqt4,pylint
来源: https://codeday.me/bug/20190915/1805985.html