#装饰器不更改函数内部代码,执行函数前和执行函数后,添加功能
#一旦一个函数被装饰器装饰,那么函数会被赋值给装饰器内层函数
#装饰器的参数是将老函数当参数传入到装饰器
def uncle(arg): def inner(): print('log') return arg() return inner #功能:1.自动执行uncle函数,并将下面的函数名f1当参数传递 # 2.将uncle函数的返回值重新赋值给f1 @uncle def f1(): print('F1') @uncle def f2(): print('F2') f1() f2()
def zsq(arg): def new(): print('new 函数!') r=arg() #如果想获取原函数的返回值,需要在这里定义。 print('后边加功能!') return r #然后在这里打印 #这里默认返回值是None。 return new @zsq def f1(): print('old 函数!') return 'FFFFFFFFFFFF' print(f1())
双成装饰器