我使用 Python 3 和 PyQt5。这是我的测试 PyQt5 程序,关注最后两行:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class window(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('test')
self.resize(250,200)
app=QApplication(sys.argv)
w=window()
w.show()
sys.exit(app.exec())
#sys.exit(app.exec_())
我知道 exec
是 Python 中的语言关键字。但是 官方 PyQt5 文档 中的代码 (特别是 Object Destruction on Exit 部分) 。我看到那个例子显示了 app.exec()
的使用,这让我很困惑。
当我在我的机器上测试它时。我发现我的结局没有任何明显的区别。有和没有 _
都在没有时间差的情况下产生相同的输出。
我的问题是:
- 我使用
app.exec()
有什么问题吗?就像与 Python 的内部冲突exec
?我怀疑是因为exec
都在执行某些操作。 - 如果不是,我可以互换使用吗?
原文由 socket 发布,翻译遵循 CC BY-SA 4.0 许可协议
那是因为在 Python 3 之前,
exec
是一个保留关键字,因此 PyQt 开发人员为其添加了下划线。从 Python 3 开始,exec
不再是保留关键字(因为它是一个内置函数;与print
相同的情况),因此在 PyQt5 中提供一个没有下划线与 C++ 文档保持一致,但保留带下划线的版本以实现向后兼容性。因此,对于带有 Python 3 的 PyQt5,这两个exec
函数是相同的。对于较旧的 PyQt,只有exec_()
可用。