01 初识装饰器

===================装饰器=

def func(arg):
    def inner():
        print('before')
        v = arg()
        print('after')
        return v 
    return inner 

def index():
    print('123')
    return '666'


# 示例一
"""
v1 = index() # 执行index函数,打印123并返回666赋值给v1.
"""
# 示例二
"""
v2 = func(index) # v2是inner函数,arg=index函数
index = 666 
v3 = v2()
"""
# 示例三
"""
v4 = func(index)
index = v4  # index ==> inner 
index()
"""

# 示例四
index = func(index)
index()

image-20240509215907397

装饰器

def func(arg):
    def inner():
        v = arg()
        return v 
    return inner 

# 第一步:执行func函数并将下面的函数参数传递,相当于:func(index)
# 第二步:将func的返回值重新赋值给下面的函数名。 index = func(index)
@func 
def index():
    print(123)
    return 666

print(index)

装饰器:在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能。
应用:

# 计算函数执行时间

def wrapper(func):
    def inner():
        start_time = time.time()
        v = func()
        end_time = time.time()
        print(end_time-start_time)
        return v
    return inner

@wrapper
def func1():
    time.sleep(2)
    print(123)
@wrapper
def func2():
    time.sleep(1)
    print(123)

def func3():
    time.sleep(1.5)
    print(123)

func1()

重点–总结

目的:
在不改变原函数的基础上,再函数执行前后自定义功能。 
posted @ 2024-09-26 06:18  jhchena  阅读(2)  评论(0编辑  收藏  举报