闭包函数的定义
1.定义外层函数,封装被保护的局部变量;
2.定义内层函数,执行对外层函数局部变量的操作;
3.外层函数返回内层函数的对象;并且外层函数被调用,结果被保存在全局变量中。
装饰器
装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能
区别
装饰器其实就是一个闭包函数,但装饰器他的参数有且只有一个并且是函数类型,否则他就是闭包
# 闭包函数
def a(num1, num2):
def b():
return num2 + num1
return b # 返回的是内函数的引用
c = a(2,3)()
print(c)
def dec(func1):
def wrapper(*args, **kwargs):
print('我是dec')
return func1(*args, **kwargs)
return wrapper
# 装饰器
@dec
def sum_a():
print("我是sum-a")
return 'sum-a'
msg = dec(sum_a)()
# msg = sum_a()
print(msg)