闭包:内部函数使用外部函数中的变量,这种情况下就称这是一个闭包。
def f1(b): def f2(): print(b) f2() return f2 ff=f1('bbb') ff() # bbb # bbb
def f1(): b=10 def f2(): return b return f2() print(f1()) # 10
装饰器:在不改变函数的调用方式的情况下,给函数的前后添加新的功能。
装饰器的固定结构:
def wrapper(func): def inner(*args,**kwargs): """被装饰器执行之前要添加的代码""" ret=func(*args,**kwargs) """被装饰器执行之后要添加的代码""" return ret return inner
装饰器的例子:
def wrapper(func): def inner(*args,**kwargs): print('小峰') # 被装饰器函数执行之前要添加的代码 ret=func(*args,**kwargs) print('小明') # 被装饰器函数执行之后要添加的代码 return ret return inner @wrapper def func(name): print('%s好,才是真的好'%(name)) @wrapper def fun1(): print() func('小峰') print('=='*10) print(func('小方')) # 小峰 # 小峰好,才是真的好 # 小明 # ==================== # 小峰 # 小方好,才是真的好 # 小明 # None
概念:开放封闭原则
开放是指:对扩展是开放的
封闭是指:对修改是封闭的