我正在使用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。
在这一点上,我不知道我最终在我的项目中做哪一个,虽然最后一个似乎是最痛苦的从我的角度来看。这里常见的做法是什么?是否有技术上的原因使用一种样式而不是另一种?
对于
import *
也有很好的例子。例如,Django开发人员通常有许多配置文件,并使用import*链接它们:在这种情况下,
import *
的大多数缺点变成了优势。您的问题标题的答案是“是”:我建议您不要使用
from ... import *
,我在最近的另一个答案中讨论了原因。简而言之,限定名好,barenames是非常有限的,因此“第三个选项”在您所呈现的名称中是最佳的(因为您将使用限定名,而不是barenames)。(与裸名相关的限定名的优点包括易于为了测试而伪造/模仿,减少了由于意外重新绑定而导致未注意到的错误的风险,能够在“跟踪类”中“半伪造”顶级名,以便准确地记录您正在使用的内容并简化分析等活动,等等——缺点,几乎没有。。。另请参见Python禅中最后但并非最不重要的koan,
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
子句(可能会令人困惑),我宁愿有多个语句(如果任何导入有问题,也更容易调试,如果以后更改导入,则可以编辑,…)。Python doc说:
它可能有副作用,而且很难调试
就我个人而言,我使用的是
import
,而不是from import
,因为我在文件的开头发现了可怕的大声明,我认为它使代码更具可读性如果模块名太长,并且可以使用
as
关键字在本地重命名。例如:相关问题 更多 >
编程相关推荐