Python代码中'@'的含义是什么?
我在阅读一些Python(PyQt)代码时,遇到了以下内容。
@pyqtSignature("QString")
def on_findLineEdit_textEdited(self, text):
self.__index = 0
self.updateUi()
这个@pyqtSignature
是怎么工作的?Python是怎么处理这个@
符号的呢?
2 个回答
2
这是一种用于函数装饰器的语法。
5
这是装饰器的语法,简单来说,它和下面这种形式是一样的:
on_findLineEdit_textEdited = pyqtSignature("Qstring")(on_findLineEdit_textEdited)
真的很简单。
一个典型的装饰器会把需要装饰的函数作为第一个参数,然后对这个函数进行一些处理或者添加功能。一个常见的例子是:
def echo_fname(f):
def newfun():
print f.__name__
f()
return newfun
步骤如下:
- 定义一个新函数,给
f
添加功能 - 返回这个新函数。