学习14.总结# 装饰器

2022-10-20,,

装饰

装饰器 作用在不修改源码及调用方式前提下额外增加一些功能
开放封闭原则

函数嵌套

def func():
    def foo():
        print(1)
    return foo
func()()

闭包

def func(a):
    def foo():
        print(a)
    return foo
func(1)()

low版装饰器

def func(a):
    def foo():
        print(a)
    return foo


def f1():
    print("这是一个f1")

f1 = func(f1)
f1()

被装饰得函数能够接受参数

def func(a):
    def foo(*args,**kwargs):
        a(*args,**kwargs)

    return foo

def f1(*args,**kwargs):
    print(f"这是一个{args}")

f1 = func(f1)
f1(1,2,3,34,4,5)

高级

def func(a):
    def foo(*args,**kwargs):
        a(*args,**kwargs)

    return foo

@func
def f1(*args,**kwargs):
    print(f"这是一个{args}")

f1(1,2,3,34,4,5)

被装饰得函数返回值

def func(a):
    def foo(*args,**kwargs):
        ret = a(*args,**kwargs)
        return ret
    return foo

@func
def f1(*args,**kwargs):
    print(f"这是一个{args}")
    return "我可以返回了"
f1(1,2,3,34,4,5)

标准版 装饰器

def func(a):  # a是要被装饰的函数名
    def foo(*args, **kwargs):
        "装饰之前的操作"
        ret = a(*args, **kwargs)
        "装饰之后的操作"
        return ret

    return foo


@func
def f1(*args, **kwargs):
    print(f"这是一个{args}")
    return "我可以返回了"


f1(1, 2, 3, 34, 4, 5)

《学习14.总结# 装饰器.doc》

下载本文的Word格式文档,以方便收藏与打印。