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

4 投票
2 回答
1771 浏览
提问于 2025-04-16 00:59

我在阅读一些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 添加功能
  • 返回这个新函数。

撰写回答