prosseek
prosseek

Reputation: 191099

What's the meaning of '@' in python code?

Reading some Python (PyQt) code, I came across as follows.

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

How does this @pyqtSignature work? How Python treat this @?

Upvotes: 4

Views: 1785

Answers (2)

pygabriel
pygabriel

Reputation: 10008

It is the decorator syntax, simply it is equivalent to this form:

on_findLineEdit_textEdited = pyqtSignature("Qstring")(on_findLineEdit_textEdited)

Really simple.

A typical decorator takes as the first argument the function that has to be decorated, and perform stuff/adds functionalities to it. A typical example would be:

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

The steps are:

  • define a new function that add functionalities to f
  • return this new function.

Upvotes: 5

SilentGhost
SilentGhost

Reputation: 319889

It is a syntax for function decorators.

Upvotes: 2

Related Questions