#python #python_3x #pyqt5
Какие из ниже перечисленных импортов являются более правильными по скорости и по читаемости. 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_())
Ответы
Ответ 1
Есть замечательное правило, действующее во многих командах "Заимпортил звёздочку - получил по мордочке". А выбор между вторым и третьим вариантом - пожалуй, дело вкуса.Ответ 2
Если вы хотите все qt имена в одном пространство имён импортировать, можно Qt использовать: from PyQt5 import Qt Это позволяет писать: Qt.QApplication, Qt.QPoint, Qt.QPainter, etc. Недостаток, что все qt модули импортируются, увеличивая время загрузки и потребляемую память, если фактически вам нужны только отдельные модули. Не используйте from module import * за исключением специальных случаев: в REPL или в __init__.py файле. Пример оправданного использования: asyncio/__init__.py—asyncio предоставляет "плоский" публичный интерфейс (имена доступны прямо как asyncio.name), не смотря на то что реализация распределена по многочисленным вложенным модулям. Можно ли отнести импорты pyqt к специальным случаям, зависит могут ли конфликтующие имена появиться сегодня и в будущем (если все имена в __all__ начинаются с Q*, то нет опасности, что вы их перепутаете со своими). Не применяйте правила вслепую, используйте голову PEP-8: "A Foolish Consistency is the Hobgoblin of Little Minds."
Комментариев нет:
Отправить комментарий