#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."
Комментариев нет:
Отправить комментарий