本文主要是介绍Python2.7 -- 装饰器模式(类似Java拦截器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
# coding:utf-8
import functoolsdef log(func):def wrapper(*args, **kw):print 'call %s():' % func.__name__return func(*args, **kw)return wrapper# 高阶函数
def log(text):def decorator(func):@functools.wraps(func)def wrapper(*args, **kw):print '%s %s():' % (text, func.__name__)return func(*args, **kw)return wrapperreturn decorator# 把@log放到now()函数的定义处,相当于执行了语句:
@log('GO GO GO ')
def now():return '我是一个函数'n = now
print '执行函数:', n()
print '执行函数,名称:', n.__name__
- @functools.wraps(func)将函数名称重新绑定为now
- 装饰器模式的用法详见27行代码
- 此种用法通畅对一些方法的包装处理,在不修改源代码的基础上,比如增加调用日志、类似Java框架在的拦截器用法。
这篇关于Python2.7 -- 装饰器模式(类似Java拦截器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!