Python decorator
def test(f):
    print "before ..."
    f()
    print "after ..."
 
@test
def func():
    print "func was called"Run this file, and there is output:
before ...
func was called
after ...The two functions are not called and there is supposed to have no output.
But when Python compiler finds the decorator "@", these steps are executed:
- call function test, the input parameter for test is the function named "func" 
- test function is being executed 
 What you're doing is calling test, then using the result of that call to decorate func. Therefore runs immediately.
Last updated
