标签:执行函数 执行 ret 这一 注解 理解 存在 UNC 场景
Python装饰器看起来类似Java中的注解,然而和注解并不相同,不过同样能够实现面向切面编程。
想要理解Python中的装饰器,不得不先理解闭包(closure)这一概念。
def func():
massage = "This is a closure message"
# 这是内嵌函数
def closure_func():
# 可以使用外部函数的变量
print(massage)
pass
return closure_func
pass
# 获取一个闭包
closure = func()
# 输出信息:This is a closure message
closure()
massage 是一个局部变量,在func函数执行之后应该就不会存在了。但是嵌套函数引用了这个变量,将这个局部变量封闭在了嵌套函数中,这样就形成了一个闭包。
import time
def run_time(func):
# 这是一个闭包
def wapper(*args, **kwargs):
# 开始时间
start = time.time()
func(*args, **kwargs) # 运行函数
# 结束时间
end = time.time()
print(f"run time:{end - start}")
pass
return wapper
pass
# 这是要装饰的函数
@run_time
def func():
time.sleep(2)
pass
func()
结果:
run time:2.00065541267395
import time
def run_time(func):
# 这是一个闭包
def wapper(*args, **kwargs):
# 开始时间
start = time.time()
func(*args, **kwargs) # 运行函数
# 结束时间
end = time.time()
print(f"run time:{end - start}")
pass
return wapper
pass
# 这是要装饰的函数
@run_time
def func(i):
time.sleep(i)
pass
func(3)
结果:
run time:3.0009799003601074
标签:执行函数 执行 ret 这一 注解 理解 存在 UNC 场景
原文地址:https://www.cnblogs.com/hziwei/p/12925715.html