装饰器
'''
装饰器:就是闭包(闭包的一个应用场景)
-- 把要被装饰的函数作为外层函数的参数通过闭包操作后返回一个替代版函数
优点:
-- 丰富了原有函数的功能
-- 提高了程序的可拓展性
'''
开放封闭原则
'''
1.不能修改被装饰对象(函数)的源代码
2.不能更改被修饰对象(函数)的调用方式
'''
装饰器的简单实现
def outer(func):
def inner():
print("新增功能1")
func()
print("新增功能2")
return inner
def func():
print("原有功能")
func = outer(func)
装饰器语法糖
def outer(func):
def inner():
print("新增功能1")
func()
print("新增功能2")
return inner
装饰有参有返的函数
def outer(func):
def inner(*args, **kwargs):
print("新增功能1")
result = func(*args, **kwargs)
print("新增功能2")
return result
return inner
有参装饰器
def wrap(arg):
def outer(func):
def inner(*args, **kwargs):
print("新增功能1")
result = func(*args, **kwargs)
print("新增功能2")
return result
return inner
wraps修改函数文档注释
from functools import wraps
def outer(func):