J'utilise Python 3 et PyQt5. Voici mon programme de test PyQt5, concentrez-vous sur les 2 dernières lignes:
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_())
Je sais que exec
est un mot-clé de langue en Python. Mais codez sur Documentation PyQt5 officielle (en particulier la partie Destruction d'objet à la sortie ). Je vois que cet exemple montre l'utilisation de app.exec()
ce qui me confond.
Quand je l'ai testé sur ma machine. J'ai trouvé qu'il n'y avait aucune différence visible de ma part. Avec et sans _
Produit la même sortie sans différence de temps.
Ma question est:
app.exec()
? comme un conflit avec le exec
interne de Python? Je soupçonne que les deux exec
exécutent quelque chose.C'est parce que jusqu'à Python 3, exec
était un mot-clé réservé , les développeurs PyQt y ont donc ajouté un trait de soulignement. From Python à partir de 3, exec
est n'est plus un mot-clé réservé (car il s'agit d'une fonction intégrée; même situation que print
), donc cela avait du sens dans PyQt5 pour fournir une version sans trait de soulignement pour être cohérente avec les documents C++, mais conserver une version avec trait de soulignement pour la compatibilité descendante. Donc pour PyQt5 avec Python 3, les deux fonctions exec
sont Pour PyQt plus ancien, seule exec_()
est disponible.
Sur la question de savoir s'il faut préférer l'un à l'autre: utiliser exec_
signifie que vous avez une chose de moins à vous soucier si vous décidez d'ajouter la prise en charge de PyQt4 et/ou Python> = 2.6, et que vous souhaitez conserver une base de code unique.