最近在学pyqt5,遇到的一些知识点记录一下,在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰。
解释:当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的函数的参数,然后将返回值赋值给下一行修饰的函数对象。
比如:
@a
@b
def c():
…
python会按照自下而上的顺序把各自的函数结果作为下一个函数(上面的函数)的输入,也就是a(b(c()))
再举个pyqt5的栗子:
@pyqtSlot()就是个修饰符
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow, QApplication
from ui_mainWin02 import Ui_MainWindow
import sys
class layoutDemo(QMainWindow, Ui_MainWindow):
def __init__(self, parent = None):
super(layoutDemo, self).__init__(parent)
self.setupUi(self)
@pyqtSlot()
def on_pushButton_clicked(self):
"""
Slot documentation goes here.
"""
print('收益_min:', self.doubleSpinBox_Returns_min.text())
print ('收益_max:', self.doubleSpinBox_Returns_max.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = layoutDemo() #开个对象
ui.show()
sys.exit(app.exec_())
另外再解释下:
1、 if __name__ == "__main__":
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!