python装饰器

#装饰器不更改函数内部代码,执行函数前和执行函数后,添加功能
#一旦一个函数被装饰器装饰,那么函数会被赋值给装饰器内层函数
#装饰器的参数是将老函数当参数传入到装饰器
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())

双成装饰器

原文地址:https://www.cnblogs.com/Z-style/p/5548219.html