一、使用修饰函数在函数执行前和执行后分别附加额外功能
1.1 代码
#!/usr/bin/env python
def deco(func):
print "before func called"
func()
print "after func called"
return func
def myfunc():
print "myfunc() called"
myfunc = deco(myfunc)
myfunc()
myfunc()
1.2 运行结果
二、使用语法糖@来装饰函数
2.1 代码
#!/usr/bin/env python
def deco(func):
print "before func called"
func()
print "after func called"
return func
@deco
def myfunc():
print "myfunc() called"
myfunc()
myfunc()
2.2 运行结果
三、使用内建函数来确保每次新函数都会被调用
3.1 代码
#!/usr/bin/env python
def deco(func):
def _deco():
print "before func called"
func()
print "after func called"
return _deco
@deco
def myfunc():
print "myfunc() called"
myfunc()
myfunc()
3.2 运行结果
参考资料:
Python装饰器学习:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html