结合代码实例刨析python装饰器的作用及运行逻辑


# 装饰器的作用:在不修改原有函数代码的情况下,给函数增加新的功能
# 下面结合代码实例刨析装饰器的运行逻辑

def func_out(func): # 3、执行func_out(test),此时func=test
print('Hello', end=' ') # 4、打印Hello

def func_in():
print('Decorate', end=' ') # 7、打印Decorate
        func()  # 8、执行data(),此时func=test,so,执行func()即执行test()
return func_in # 5、执行return,此时步骤2中的test=func_in


@func_out # 2、执行装饰器@func_out,此时相当于执行:test = func_out(test) -->此为装饰器执行的固定语法
def test(): # 6、执行test(),而此时test=func_in,so,执行test()即执行func_in()
print('!') # 9、打印!


test() # 1、实例化

>>>Hello Decorate !


# 下面结合一个需求,帮助我们更好的理解装饰器的作用
# 需求:给出了一个函数,功能是计算出任意多个数字的和:calculate(*args),请计算出此函数的运行时间。
# 设计:使用装饰器实现计算函数运行时间的功能
import time

def run_time(calc):
def run_time_in(*args): # #
start = time.time()
calc(*args) # #
end = time.time()
runtime = end - start
print('calculate函数运行时间为:%f' % runtime)
return run_time_in


@run_time
def calculate(*args):
sum = 0

for i in range(len(args)):
sum += args[i]

print(sum)


calculate(10, 3, 5, 5)

>>>23
>>>calculate函数运行时间为:*******
 
posted @ 2022-07-04 00:11  菜花小兔  阅读(54)  评论(0编辑  收藏  举报