一些关于一些关于python 装饰器的个人理解装饰器的个人理解
装饰器装饰器
本质是一个接受参数为函数的函数。
作用:为一个已经实现的方法添加额外的通用功能,比如日志记录、运行计时等。
举例举例
1.不带参数的装饰器,不用不带参数的装饰器,不用@
# 不带参数的装饰器
def deco_test(func):
def wrapper(*args, **kwargs):
print("before function")
f = func(*args, **kwargs)
print("after function")
return f
return wrapper
def do_something(a,b,c):
print(a)
time.sleep(1)
print(b)
time.sleep(1)
print(c)
return a
if __name__ == '__main__':
# 不用@
f = deco_test(do_something)("1","2","3")
输出:
before function
1
2
3
after function
个人理解:个人理解:
相当于在 do_something 函数外面套了两个输出: before function 和 after function 。
2.不带参数的装饰器,用不带参数的装饰器,用 @
# 不带参数的装饰器
def deco_test(func):
def wrapper(*args, **kwargs):
print("before function")
f = func(*args, **kwargs)
print("after function")
return f
return wrapper
@deco_test
def do_something(a,b,c):
print(a)
time.sleep(1)
print(b)
time.sleep(1)
print(c)
return a
if __name__ == '__main__':
# 使用@
f = do_something("1","2","3")
输出:
before function