我尝试在导入模块时坚持最佳做法,我试图理解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的推荐是什么?
答案 0 :(得分:1)
没有推荐,因为它过分依赖于您的项目,以及您可能遇到的潜在名称冲突。如果您还没有QPoint
对象(您自己的对象,或者可能来自其他软件包),您可能会发现只读取QPoint
符号就更容易了需要的。
但是,如果您将来与另一个同时提供QPoint
的包进行交互,则需要通过其父包引用它们,或者在引用之前使用from PyQt5.QtCore import QPoint as PyQt5QPoint
语法后续代码中的PyQt5Point
。