python代码中'@'的含义是什么?

时间:2010-07-08 13:02:52

标签: python syntax

阅读一些Python(PyQt)代码,我发现如下。

@pyqtSignature("QString")
def on_findLineEdit_textEdited(self, text):
    self.__index = 0
    self.updateUi()

这个@pyqtSignature如何运作? Python如何处理这个@

2 个答案:

答案 0 :(得分:5)

它是装饰器语法,只是它等同于这种形式:

on_findLineEdit_textEdited = pyqtSignature("Qstring")(on_findLineEdit_textEdited)

非常简单。

典型的装饰器将必须装饰的函数作为第一个参数,并对其执行填充/添加功能。一个典型的例子是:

def echo_fname(f):
    def newfun():
       print f.__name__
       f()
    return newfun

步骤如下:

  • 定义一个向f
  • 添加功能的新功能
  • 返回此新功能。

答案 1 :(得分:2)

这是function decorators的语法。