1.在一个函数内部的函数,同时引用了外部函数的变量,绑定了外部变量的过程就叫闭包(对数据的操作封装了起来)
2.装饰器:不影响原有功能的前提下,可以添加新功能,可以用来调用无法修改的第三方API
a.外部闭包函数的参数是被封装修饰器的函数对象。
b.返回的是装饰函数+新增的装饰功能。
c.可以理解为装饰器设计模式。
案例:
# 构建模拟事务处理装饰器
# 一.函数1: 删除数据功能
def delete():
print("删除数据功能")
# 函数2: 增加数据功能
def add():
print("增加数据功能")
# 二.需要新增功能检查数据是否存在
def user_chexk(func):
def f1():
print("检查数据是否存在")
func()
return f1
# 三.使用闭包给函数1和2添加功能
use1=user_chexk(delete)
use1()
print(use1)
use2=user_chexk(add)
use2()
print(use2)
#四:使用装饰器给函数1和2添加功能
@user_chexk
def delete2():
print("删除数据功能--使用装饰器")
delete2()
@user_chexk
def add2():
print("增加数据功能--使用装饰器")
add2()
运行结果: