以下哪个导入在速度和可读性方面更正确。
1 个选项
import sys
from PyQt5.QtWidgets import *
class Io(QWidget):
def __init__(self):
super().__init__()
b = QCommandLinkButton("Переход")
layout = QVBoxLayout()
layout.addWidget(b)
self.setLayout(layout)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
main = Io()
sys.exit(app.exec_())
选项 2
import sys
from PyQt5 import QtWidgets
class Io(QtWidgets.QWidget):
def __init__(self):
super().__init__()
b = QtWidgets.QCommandLinkButton("Переход")
layout = QtWidgets.QVBoxLayout()
layout.addWidget(b)
self.setLayout(layout)
self.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main = Io()
sys.exit(app.exec_())
3个选项
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QCommandLinkButton
class Io(QWidget):
def __init__(self):
super().__init__()
b = QCommandLinkButton("Переход")
layout = QVBoxLayout()
layout.addWidget(b)
self.setLayout(layout)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
main = Io()
sys.exit(app.exec_())
有一条适用于许多团队的绝妙规则“我输入了一个星号——我把它放在脸上了。” 第二个和第三个选项之间的选择可能是一个品味问题。
如果要在同一个命名空间中导入所有 qt 名称,可以使用Qt:
这允许您编写:
Qt.QApplication、Qt.QPoint、Qt.QPainter等。缺点是所有 qt 模块都是导入的,如果您实际上只需要单个模块,则会增加加载时间和内存消耗。除非在特殊情况下,否则不要使用
from module import *:在 REPL 或__init__.py文件中。合理的使用示例:asyncio/__init__.py-asyncio提供“平面”公共接口(名称可直接作为asyncio.name),尽管实现分布在许多嵌套模块上。pyqt导入是否可以归类为特殊情况取决于今天和将来是否会出现冲突的名称(如果所有名称都以__all__开头Q*,那么您不会将它们与您自己的名称混淆)。不要盲目地套用规则,使用PEP-8 头:“愚蠢的一致性是 Little Minds 的妖精。”