PEP8导入约定

时间:2016-09-14 15:22:19

标签: python pyqt pep8

我尝试在导入模块时坚持最佳做法,我试图理解PEP8对此的说法。

让我们说我的框架有数百个类和几十个包。例如,PyQt5或者sympy会是很好的候选人......这个套装中最好的选择是什么?

a)导入所有内容

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

print(QPoint)
print(QPixmap)
print(QApplication)

b)仅导入大包并使用整个应用程序的前缀

from PyQt5 import QtCore, QtGui, QtWidgets

print(QtCore.QPoint)
print(QtGui.QPixmap)
print(QtWidgets.QApplication)

c)从大包中导入特定类

from PyQt5.QtCore import QPoint
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication

print(QPoint)
print(QPixmap)
print(QApplication)

PEP8不鼓励选项a),b)或c)...... PEP8的推荐是什么?

1 个答案:

答案 0 :(得分:1)

没有推荐,因为它过分依赖于您的项目,以及您可能遇到的潜在名称冲突。如果您还没有QPoint对象(您自己的对象,或者可能来自其他软件包),您可能会发现只读取QPoint符号就更容易了需要的。

但是,如果您将来与另一个同时提供QPoint的包进行交互,则需要通过其父包引用它们,或者在引用之前使用from PyQt5.QtCore import QPoint as PyQt5QPoint语法后续代码中的PyQt5Point