python装饰器

来源:互联网 发布:php oa 工作流引擎 编辑:程序博客网 时间:2024/06/11 17:51
# -*-coding : utf-8 -*-def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper'''foo(): print('1111')f=foof()>>>1111'''@logdef now(): print('2015-3-25')#now = log(now) #这里log(now)的返回值就是wrapper,now变量被赋值一个函数名,可以用@log代替此句now()#执行的是上一句的wrapper函数,在这个函数中,先执行print(),再执行func(),func()就是本身的now(),#如果不执行now = log(now),函数now()直接就是now()函数。#有些依赖函数签名的代码执行就会出错,需要@functools.wraps(func),将wrapper这个函数里面wrapper.__name__ = func.__name__。#只需记住在定义wrapper()的前面加上@functools.wraps(func)即可。print(now.__name__)
0 0