python 装饰器:
装饰器的作用就是在函数调用方法不变的情况下,把一个函数封装到另一个函数里面,执行这个函数时自己去调用另一个函数.
一、了解装饰器之前,先看看下面这个列子.
1 #python解释器从上往下执行。 2 例一: 3 4 def foo(): //1.将函数放进内存 5 print ‘foo‘ 6 7 foo() //2.执行这个函数.去内存里面找到foo函数,执行里面的内容"print ‘foo‘" 8 9 foo //代表函数名,指向了内存地址。可以对foo重新赋值。。 10 11 例二: 12 13 def foo(): 14 print ‘foo‘ 15 16 foo = lambda x: x + 1 17 18 foo() # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了
再看看下面这段代码,能看懂就离学会装饰器不远了.
1 ########################################## 2 def f1(arg): 3 arg() 4 5 def func(): 6 7 print "12" 8 9 f1(func)
#我们可以简单的看看它的执行顺序:
----------------------------------------------------------
1、执行def f1(arg): 将其放进内存地址.内容不执行.
2.执行def func():将其放进内存地址,内容不执行.
3.执行f1(func) 给f1传的参数为func,这个参数为func()函数.
4.执行def f1(arg): ===> arg = func ===> arg() ==func()
5.执行arg() ==> func()
6.执行def func(): 函数
7. 执行 print "12"
总结:把一个函数func()封装到另一个函数f1(arg)里面,执行这个函数f1(func)时自己去调用另一个函数.
下来我们就看看装饰器到底是什么鬼:
原文:http://www.cnblogs.com/saneri/p/4992586.html