python基础-装饰器

定义:

不改变原函数的代码增添新功能

闭包实现装饰器

def log_time(func):

	def inner(*args, **kwargs):

		beg = time.time()
		ret = func(*args, **kwargs)
		end = time.time()

		print("总耗时:%d", end - beg)

		return ret
	return inner

@log # 把@log放到f()函数的定义处,相当于执行了语句:log = log(f)
def f():
    pass

装饰器传参

def log(text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator
@log('execute') # 相当于执行 now = log('execute')(now)
def now():
    print('2015-3-25')

类实现装饰器

要实现init和call方法

posted @ 2022-08-26 16:41  aleiyoy  阅读(19)  评论(0)    收藏  举报