python学习之装饰器
在C/C++中,指针的运用是个高级的话题,我们可以使用指针随意操纵数据对象和内存地址。函数的入口其实也是一个内存地址,为了可以随意地调用函数,需要用到函数指针和回调函数的概念。python中没有指针一说,所有的对象(包括函数)都可以通过引用的方式进行调用。先看下面的例子 def foo(): print 'this foo()' bar=foo bar() this foo() 当我们把foo赋值给bar时,bar和foo其实引用了同一个函数对象,这是就可以以调用foo()的方式调用bar()了。不过需要注意的是,foo是函数对象的引用,而foo()是函数对象的调用。再看下面的例子 def foo(func): print 'this foo' return func def bar(): print 'this bar' bar=foo(bar) bar() this foo this bar 这种用法是不是让你想起了C/C++中的函数指针的用法,确实很像,实际上它也实现了类似的功能。闲话讲了很多,那么装饰器该正式登场了,其实装饰器的语法糖类似于 bar=foo(bar),只不过它简化了表现形式。 def foo(func): print 'this foo' return func @foo def bar(): print 'this bar' bar() bar()