#!/usr/bin/env python3 # -*- coding: utf-8 -*- import functools import time #打印函数执行时间 def metric2(fn): @functools.wraps(fn) def wrapper(*args, **kw): t0=time.time() res=fn(*args, **kw) t1=time.time() print('%s executed in %s ms' % (fn.__name__,t1-t0)) return res return wrapper @metric2 def now(): print('2020-11-17') now() #既支持@log,又支持@log('text') def log(*args): a0=args[0] a1=args[1] def decorator(fn): @functools.wraps(fn) def wrapper(*args2, **kw): print('函数名:%s\nlog参数:%s' % (fn.__name__,a0+' 后面是 '+a1)) return fn(*args2, **kw) return wrapper return decorator @log('这里是带参数的decorator对应的参数','第二个参数') #带参数的decorator def f2(): print('程序执行成功') f2() #在程序调用前打印begin call,调用后打印end call def log1(fn): @functools.wraps(fn) def end(func): print('end call function: %s' % fn.__name__) def wrapper(*args, **kw): print('begin call function: %s' % fn.__name__) return end(fn(*args, **kw)) return wrapper @log1 def f3(): print('程序执行成功') f3()
还是不太明白这句话 @functools.wraps(func)是干什么的
Sign in to make a reply
雅乐landa