Python Decorators are flexible means to modify / enhance behavior of a method in non intrusive way. Suppose you want call function foo() and want ensure that you are actually logged in. If you are not logged in direct you to login page and later take you back to page you are asking for.
Here is a small demonstration of python decorators.
def greet(func) : def deco_greet(name, *args) : print "greeting started for %s" % name func(name,*args ) return deco_greet def guestbook(func) : def deco_guestbook(name, *args) : print "Adding.. %s in guest book" % name func(name,*args) return deco_guestbook @guestbook @greet def welcome(name, *args) : print "welcome %s" % name print args welcome("John", ["is", "my", "teacher"])