python @ 修饰符的作用

本文介绍了Python装饰器的基本概念及工作原理,并通过一个PyQt5的应用实例展示了装饰器在GUI编程中的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学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__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值