##装饰器 封装一个函数,并修改该函数的行为 https://www.runoob.com/w3cnote/python-func-decorators.html def now(): print('2022-6-2') f = now # del now print(f.__name__) from functools import wraps def log(func): @wraps(func) def wrapper(*args,**kw):# *args,**kw 万能不确定参数。适用任何函数的参数形式 print(f'call {func.__name__}') return func(*args,**kw) return wrapper @log def now(): print('20220602') print(now.__name__) now() def log(text): def decorator(func): @wraps(func) def wrapper(*args,**kw): print(f'{text},call {func.__name__}') return func(*args,**kw) return wrapper return decorator @log('hefei:') def now(): print('20220602') now() print(now.__name__) #practice 设计一个装饰器decorator,可作用于任何函数上面,并打印该函数的执行时间 from datetime import datetime,timedelta def runDatetime(func): @wraps(func) def wrapper(*args,**kw): print(f'start {func.__name__}() at {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}') return func(*args,**kw) return wrapper @runDatetime def hi(name='angel'): print(f'hi,{name}') hi() def arg_log(*text): def log(func): def wrapper(*args,**kw): print(f'before call, {text}') fr = func(*args,**kw) #执行函数并获取返回值 print(f'after call, {text}') return fr return wrapper return log @arg_log('exe') def hello(name='angel'): print(f'hello {name}') return 1 f = hello('violet') print(f)
Sign in to make a reply
Promethues