''' 装饰器:基于开放封闭原则,在不修改原功能的模块的前提下,使用装饰器对原功能进行扩展 封闭:已实现的功能代码 开放:对扩展开发 ''' # 装饰器的实现过程 # 在这里test1是原函数,set_func是装饰过后的函数 def set_func(func): def call_func(): print('....权限1.....') print('....权限2.....') func() return call_func @set_func # 等价于 test1 = set_func(test1) def test1(): print(".......这是test1......") # 通过变量的引用达到不需要更换函数名的效果,对原函数功能进行了扩展 # test1 = set_func(test1) # 将set_func函数执行后的return返回对象引用并且将test1函数的引用给传递进去了,此时的test1相当于call_func函数 test1() test1() test1() # 这里调用test1相当于调用call_func,而对test1函数的调用是通过上一个传递进来的参数,在call_func内部调用的 ''' def set_func(func,num): a = func print('....权限1.....') print('....权限2.....') a(num) 等价于 test1 = set_func(test1) def test1(num): print(".......这是test1......%d" % num) test1 = set_func(test1,100) test1(100) test1(200) '''
第二十五节 装饰器的原理实现
猜你喜欢
转载自www.cnblogs.com/kogmaw/p/12602544.html
今日推荐
周排行