Python 装饰器

2018-01-15  本文已影响8人  enhengz

装饰器是方便开发根据产品经理调整代码的过程

只用语言描述很难理,下面直接看样例代码

1   def outer(fun):

3       def wrapper(age):#遇见函数先放在内存

6              print ("a")

7              print ("b")

               fun(age )

9              print ("最后")

4      return wrapper

2 @outer#相当回去执行outer(),并且传入的参数为foo,最终执行的是outer(foo)

 def foo(age):

8    print ('a',age)

#在上面执行完之后,相当于重新定义了一个foo函数

‘’‘

foo()=def wrapper(age):   print ("a")   print ("b")   fun(age )   print ("最后")#主要是wrapper的return

'''

5 foo("age")

这部分代码的前面是我打上的程序运行顺序,方便解释和理解

首先,如果我们现在定义一个函数foo(),print是a,后面产品经理 要求 在加一个print b,我们直接加上就行,但是如果我们不是一个函数,而是成千上百个函数,这样如果我们在一个个加是不是会瞬间爆炸,装饰器就是解决这个爆炸心情的关键

我们在foo主函数前面定义了一个outer函数,这个函数就是装饰器的关键,而且这个函数是函数套函数,函数的执行方式我们都懂的,但是怎么样使outer函数与foo函数相连呢,这个时候就用到了@outer,这个是装饰器与函数链接的关键,在这个地方@outer就等于outer(foo),通过这样的方式,遇到产品经理要求改的时候我们只要修改 outer里面的函数就行了,这就是装饰器的方便之处

在执行函数方面,def的函数是先存在内存里面,调用的时候才会执行,同时注意如果需要加参数时,参数添加的位置

上一篇下一篇

猜你喜欢

热点阅读