mean of arobase in python

Fredrik Lundh fredrik at pythonware.com
Wed Jul 23 09:47:10 CEST 2008


Guilhem Faure wrote:

> What means @ in python ?

usually called "at sign" in english.

> In this script for exemple (this script return an error in my konsole...)
> 
> @f1(arg)
> @f2
> def func(): pass
> 
> I see several script where used this symbol but I can't understand.

in your example, "f1(arg)" and "f2" are decorators.  the above is 
equivalent to writing

     def func():
         pass
     func = f1(arg)(f2(func))

that is, define a function, and then pass it to the function "f2", and 
then to the function that's returned by calling "f1(arg)".  the final 
value of the "func" variable is whatever the decorators returned.

the decorator functions (f2 and whatever f1(arg) returns) can manipulate
the function being defined, or even replace it with something else.

specification:

     http://www.python.org/dev/peps/pep-0318/

some (semi-advanced) articles:

     http://www.ibm.com/developerworks/linux/library/l-cpdecor.html
     http://www.phyast.pitt.edu/~micheles/python/documentation.html

</F>




More information about the Python-list mailing list