装饰器
目的: 不改变原来代码的基础上. 给函数添加新功能
动态代理. 拦截器
通用装饰器的写法
def wrapper(fn):
def inner(*args, **kwargs):
‘‘‘之前‘‘‘
ret = fn(*args, **kwargs)
‘‘‘之后‘‘‘
return ret
return inner
@wrapper
def login():
pass
带参数的装饰器
def wrapper_out(flag):
def wrapper(fn):
def inner(*args, **kwargs):
if flag:
print("问问老板, 行情怎么样")
else:
print("自己去")
ret = fn(*args, **kwargs)
print("亲人两行泪")
return ret
return inner
return wrapper
@wrapper_out(False)
def yue():
print("约me?")
@wrapper_out(True)
def chi():
print("吃饭去了")
yue()
chi()
原文:https://www.cnblogs.com/xdlzs/p/10415085.html