我正在使用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个类。第三种选择是:
from PyQt4 import QtCore, QtGui
然后在我使用它们时在所有类前面加上QtCore或QtGui。
在这一点上,我对我最终在项目中完成的工作还是不确定的,尽管从我的角度来看,最后一个似乎是最痛苦的。这里有哪些常见做法?是否有技术原因使用一种样式而不是另一种样式?
您的问题标题的答案是“是”:我建议不要使用from ... import *,并且在另一个最近的答案中讨论了原因。简而言之,合格名称是 好 名称,裸名非常有限,因此在显示的名称中,“第三种选择”是最佳的(因为您将使用合格名称,而不是裸名)。
from ... import *
(具有合格名称的优点包括:易于伪造/模拟以用于测试目的,降低了因意外重新绑定而引起的未被注意的错误的风险已消除,可以将“跟踪类”中的顶级名称“半伪造”用于记录目的确切地说,您正在使用什么并简化了诸如剖析之类的活动- 缺点,几乎没有…import this在交互式解释器提示符下,还请参见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?往往是中间的选择是最好的,但并不总是;-)。
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
顺便说一句,我不会as在一个from或一个语句中使用多个子句import(可能会造成混淆),我宁愿有多个语句(如果任何导入带来问题,也更容易调试,如果将来更改导入,则可以进行编辑,…)。
as
from
import